package thread;
/*
* 通过实现Runnable()接口运行新的线程,按照以下顺序进行。
* (1)编写实现Runnable接口的类
* (2)在这个类中实现run()方法。
* (3)生成这个类的实例。
* (4)把这个实例作为构造方法的参数生成Thread类的对象
* (5)调用此Thread类的对象的start()方法。
*/
public class CountDownTest implements Runnable {
private String name;
public CountDownTest(String name){
this.name=name;
}
public void run() {
// TODO Auto-generated method stub
for(int i=3;i>=0;i--){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
System.out.println(name+":"+i);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CountDownTest cdt1=new CountDownTest("thread 1");
CountDownTest cdt2=new CountDownTest("thread 2");
Thread t1=new Thread(cdt1);
Thread t2=new Thread(cdt2);
t1.start();
t2.start();
}
}
结果如图:
在实现Runnable接口的类中必须定义的方法只是run()方法。在run()方法中和继承Thread时一样,描述其在线程运行的处理。此程序的run方法几乎和前面的程序一样,只是因为sleep方法是Thread类的方法,所以使用了不同的方式。
运行实现Runnable接口的新线程,在生成实现Runnable接口的类的实例之后,还必须生成Thread类的对象。在生成Thread类的对象时,必须制定构造的参数为实现Runnable接口的类的实例。
閱讀更多 專業技術交流 的文章