由于Java的单继承局限,所以我们推荐使用Runnable接口实现多线程。在Java里面专门提供了Runnable接口,此接口定义如下:
@FunctionInterface
public interface Runnable{
public void run();
}
这是一个函数式接口,规定里面只有一个run方法
那么只需要让一个类实现Runnable接口即可,并且也需要覆写run方法。
class MyThread implements Runnable{
private String name;
public MyThread(String name){
this.name=name;
}
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println(this.name+"==>"+i);
}
}
}
与继承Thread类相比,MyThread类在结构上没有区别,除了一点,如果继承了Thread类,同时也直接继承了start方法(),但是如果实现的是我们Runnable接口,并没有start方法可以调用。
不管何种情况下,要想启动多线程,一定依靠Thread类完成,Thread类定义有以下构造方法。
public Thread(Runnable target)
接收的是Runnable接口对象,自然可以接收Runnable子类。
因而我峨嵋你使用Runnable接口完整实现多线程应该如下:
package TestDemo;
class MyThread implements Runnable{
private String name;
public MyThread(String name){
this.name=name;
}
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println(this.name+"==>"+i);
}
}
}
public class TestDemo{
public static void main(String[] args) {
MyThread thread1=new MyThread("ThreadA");
MyThread thread2=new MyThread("ThreadB");
MyThread thread3=new MyThread("ThreadC");
new Thread(thread1).start();
new Thread(thread2).start();
new Thread(thread3).start();
}
}

也成功了。
网友评论