方法 从 Thread米派生出一个子类米,在类中一定要 a命令提示符 D: Nava \program\chapter10>javac ThreadTest-jaua D: Nava\program\chapter10>java ThreadTest You are Students? Teacher? am a Teacher? You are Students? I am a Teacher? am a Teacher? You are Students? am Teac her? am a Teacher? You are students? You are Students! are students? D: Nava \program\chapter10>, left. start
方法一 § 从Thread类派生出一个子类,在类中一定要 实现run() § 然后用该类创建一个对象 § 用start()方法启动线程 (程序11-1 11-2 ) class Lefthand extends Thread { public void run(){ …… } } Lefthand left = new Lefthand(); left.start();
方法二 public class xyz implements Runnable( Int 1 口 public void run(t while(true) System. out. printIn("Hello+i++) Runnable r= new xyz; Thread t= new Thread(r)
方法二 § Thread的构造方法中包含有一个Runnable实 例的参数,必须定义一个实现Runnable接口 的类并产生一个该类的实例,对该实例的 引用就是适合于这个构造方法的参数 class BallThread extends Applet implements Runnable{ public void start(){ thread=new Thread(this); thread.start(); } private Thread thread; } public class xyz implements Runnable{ int i; public void run(){ while (true) { System.out.println("Hello "+i++); } } } Runnable r = new xyz(); Thread t = new Thread(r);
线程 CPU Thread t c⊥ ass xyz Code Data xyz r
CPU Code Data Thread t xyz r class xyz 线程
模拟小球例子 程序113是一个模拟小球平抛和自由落体的 例子 BallThread. java 相应的HTML文档 小程序查看器:B41 Thread □口 Applet 小程序已启动
模拟小球例子 § 程序11-3是一个模拟小球平抛和自由落体的 例子BallThread.java § 相应的HTML文档
两种方法的讨论 适用于采用实现 Runnable接口方法的情况 需要多继承的情况,比如对于 Applet程序 保持程序风格的一贯性 适用于采用继承 Thread方法的情况 为代码稍微简洁一些 在以后的继承中可能会出现麻烦
两种方法的讨论 § 适用于采用实现Runnable接口方法的情况 § 需要多继承的情况,比如对于Applet程序 § 保持程序风格的一贯性 § 适用于采用继承Thread方法的情况 § 为代码稍微简洁一些 § 在以后的继承中可能会出现麻烦