/**
* 创建一个子线程, 完成1-100之间自然数的输出,同样的主线程执行同样的操作
*创建多线程的第二种方式,通过实现的方式
* 继承和实现的方式对比
* 一,联系:
* public class Thread extends Object implements Runnable
* 二,两个方式好,实现的方式好
* why?实现的方式避免了Java单继承的局限性,如果多个线程要操作一份数据,更适合使用实现的方式
*/
//1创建一个实现了Runnable接口类
class PrintNum1 implements Runnable{
//2实现接口的抽象方法
public void run(){
for(int i = 1;i<101;i++){
System.out.println(Thread.currentThread().getName()+":"+i);
}
}
}
public class TestThread2 {
public static void main(String[] args) {
//3创建一个Runnable接口实现类的对象
PrintNum1 pn = new PrintNum1();
//要想启动一个多线程,必须调用start
//4将实现类对象作为形参传递给Thread类的构造器中,创建Thread类的对象,此对象即为一个线程
Thread t1 = new Thread(pn);
//启动线程,执行Thread对象生成时构造器形参的对象
//5调动start,启动线程执行run方法
t1.start();
//再创建一个线程
Thread t2 = new Thread(pn);
t2.start();
}
}