19.2.2 实现java.lang.Runnable接口
Java不允许一个类继承多个类,因此,一旦Monkey类继承了Thread类,就不能再继承其他的类。为了解决这一问题,Java提供了java.lang.Runnable接口,它有一个run()方法,它的定义如下:public void run();
以下例程19-6的Monkey类实现了Runnable接口,run()方法包含线程所执行的代码。如果Monkey类日后需要继承其他的类,如OtherClass类,也完全行得通:public class Monkey extends OtherClass implements Runnable{……}
例程19-6 Monkey.javapackage runimpl;
public class Monkey implements Runnable{
private String name;
public Monkey(String name){
this.name=name;
}
public void fight(){ /* 与敌人战斗 */
for(inti=1;i<=100;i++)
System.out.println(name+":打败第"+i+"个敌人");
}
public void run(){
fight();
}
}
以上Monkey类尽管为线程提供了run()方法,但它本身不是线程类,如果要创建一个专门执行Monkey类的run()方法的线程,需要按照如下方式创建一个Thread对象:Monkeym1=newMonkey("第1个小悟空");
//创建第1个小悟空对象
Threadt1=newThread(m1);
//创建第1个小悟空线程对象
t1.start();
//启动第1个小悟空线程
在Thread类中定义了如下形式的构造方法://当线程启动时,将执行参数runnable所引用对象的run()方法
Thread(Runnable runnable)
在以下例程19-7的War类中,main主线程创建了t1、t2和t3这3个小悟空线程对象。当启动这3个线程,将分别执行3个Monkey对象的run()方法。
例程19-7 War.javapackage runimpl;
public class War{
public static void main(String args[]){
Monkeym1=newMonkey("第1个小悟空"); //创建第1个小悟空对象
Monkeym2=newMonkey("第2个小悟空"); //创建第2个小悟空对象
Monkeym3=newMonkey("第3个小悟空"); //创建第3个小悟空对象
Threadt1=newThread(m1); //创建第1个小悟空线程对象
Threadt2=newThread(m2); //创建第2个小悟空线程对象
Threadt3=newThread(m3); //创建第3个小悟空线程对象
t1.start(); //启动第1个小悟空线程
t2.start(); //启动第2个小悟空线程
t3.start(); //启动第3个小悟空线程
}
}
【责任编辑:云霞 TEL:(010)68476606】
点赞 0