其实Runnable和Threa两者之间并没有本质的区别,就是接口与类的关系。
1.Rnnable是一个接口,需要一个类去实现它即可使用。
接口可以支持多继承。
public class MyRunable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("run :" + i);
}
}
}
在测试类中运行起来:
public class Test02 {
public static void main(String[] args) {
//创建MyRunnable类的对象
MyRunable mr = new MyRunable();
//创建Thread类的对象,把MyRunnable对象作为参数传入
Thread t = new Thread(mr);
//调用start()方法启动线程
t.start();
}
}
运行结果:
2.Thread的使用方法是子类继承它,可以使用父类的方法。
public class MyThread extends Thread{
public MyThread(String name) {
super(name);
}
@Override
public void run() {
System.out.println("t.getName() :" + getName());
for (int i = 0; i < 3; i++) {
System.out.println("run:" + i);
}
}
}
两者对比之下看得出来Thread的使用会更加简便,代码量没有Runnable多,直接继承就可以使用,而Runnable则还需要多new一个对象,再进行参数传递。
总结:
Thread和Runnable的实质是继承关系,没有可比性。
无论使用Runnable还是Thread,都会new Thread,然后执行run方法。