实现线程有两种方式:实现Runnable接口和继承Threa类。
差异及区别:
1、实现Runnable接口方式的线程必须通过new Thread(new Ruannbel)启动。
2、继承Thread类的线程,不能在继承其他的类。
3、Runnable方式的接口是针对同一对象操作,Thread方式的线程每次都会产生一个新的线程。
语言表达能力较差,举例说明
public class Thread1 implements Runnable{
private int i;
public void run(){
System.out.println(i++);
}
}
public class Thread2 extends Thread{
private int i;
public void run(){
System.out.println(i++);
}
}
public class ThreadTest{
public static void main(String[] args){
/*实现Runnable接口的线程 会在控制台打印0,1,28*/
Ruannable r = new Thread1();
new Thread(r).start();
new Thread(r).start();
new Thread(r).start();
/*继承Thread类的线程始终是0*/
new Thread2().start();
new Thread2().start();
new Thread2().start();
}
}
除了上面的注释中说的区别外,还有一点需要注意就是继承Thread方式的线程中synchronized方法除非是static修饰的否则不起作用。
语言表达能力太差了,大家共同学习!