java线程有两种创建方式
第一种方式:使用Runnable接口创建线程
第二种方式:直接继承Thread类创建对象
使用Runnable接口创建线程
1.可以将CPU,代码和数据分开,形成清晰的模型
2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法
3.有利于保持程序的设计风格一致
直接继承Thread类创建对象
1.Thread子类无法再从其它类继承(java语言单继承)。
2.编写简单,run()方法的当前对象就是线程对象,可直接操作。
在实际应用中,几乎都采取第一种方式
上边的是最明显的区别,但是我看到有笔试题会有一个类既继承了Thread又实现Runnable,问是否会出错什么的,今天突然想到了就打算查清楚,我还发现就是去查一个东西还是挺费劲的,百度半天也没找到(也估计是自己不会找),干脆直接在Eclipse里实验了一下,代码如下
public class TestThread extends Thread implements Runnable{
public void run(){
for(int i = 0;i<100;i++){
System.out.println("this is in the Test:"+i);
}
}
public static void main(String[] args){
TestThread t = new TestThread ();
Thread thread = new Thread(t);
thread.start();
}
}
还有把main方法中的调用改为
TestThread t = new TestThread ();
t.start();
两种调用都是正确的,编译和运行时都不会报错。