之前我们说到,创建线程的第一种方式为让类继承Thread,然后重写run方法,接着让类在main方法里创建一个对象,、然后让这个对象调用start方法,就可以创建让第二个线程了,今天,我们学习第二种创建线程的方法,之前我们重写run方法是不是有点像继承了一个抽象类,或者是实现了一个接口类啊?今天就学习另外一中方法,就是实现runnable接口,然后重写run方法。我写了如下代码,以供大家理解:
public class Demo2 {
public static void main(String[] args) {
Person p=new Person();
Thread t=new Thread(p);
t.start();
for (int i = 0; i < 20; i++) {
System.out.println(i+"main");
}
}
}
public class Person extends Thread {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(i+"run");
}
}
}
值得注意的是,创建Thread对象,需要在构造方法中传递Runnable接口的实现类对象。
那么,他们的区别是什么
实现Runnable创建多线程程序的好处
1.避免了单继承的局限性。
2.增强了程序的扩展性,降低了程序的解耦合。传递不同的实现类,实现不同的任务,而继承,只能去创建新的类,新的对象。
以后使用多线程时,希望大家还是能多多使用Runable接口类。