package day12;
class Demo2 implements Runnable //准备扩展Demo类的功能,让其中的内容可以作为线程的任务执行。
// 通过接口的形式完成。
{
public void run() {
show();
}
public void show() {
for (int x = 0; x < 20; x++) {
System.out.println(Thread.currentThread().getName() + "....." + x);
}
}
}
public class ThreadDemo {
public static void main(String[] args) {
Demo2 d = new Demo2();
Thread t1 = new Thread(d);//如果是new thread(); thread会运行他自己的线程,不是我们的d线程
Thread t2 = new Thread(d);
t1.start();
t2.start();
}
}
.10第二种方法和第一种方法的原理
class Thread //Thread源代码内容
{
private Runnable r;
Thread(){ //无参构造函数
}
Thread(Runnable r){//有参构造函数
this.r = r;
}
public void run(){//创建
if(r!=null)
r.run();
}
public void start(){//线程开始
run();
}
}
class ThreadImpl implements Runnable{
public void run(){
System.out.println("runnable run");
}
}
{ //main主函数内容
ThreadImpl i = new ThreadImpl();
Thread t = new Thread(i);//有参的thread
t.start();
}
.11第二种方法的好处