在这里为了举例的方便,没有使用线程池来执行任务,而是调用了Thread对象的方法,要注意推荐执行多线程的方式还是线程池。
多线程实现步骤:
- 定义Runnable接口的实现类,并重写该接口的run()方法,run()方法的内容就是该线程要执行的内容
- 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象
- 调用线程对象的start()方法来启动该线程
与直接继承Thread类相比,通过Runnable接口实现多线程有一点区别,如果继承了Thread类,同时也会直接继承start()方法,但是如果实现的是Runnable接口,那此时并没有start()方法可以调用。
所以要想启动多线程,可以依靠Thread类完成。Thread类有如下的构造方法:
public Thread(Runnable target) {
init(null, target, "Thread-" + nextThreadNum(), 0);
}
接受的是Runnable接口对象,自然可以接收Runnable子类。
使用Runnable接口实现完整多线程的过程如下:
public class test extends Thread{
public static void main(String[] args) {
MyThread thread1=new MyThread("test1");
MyThread thread2=new MyThread("test2");
MyThread thread3=new MyThread("test3");
new Thread(thread1).start();
new Thread(thread2).start();
new Thread(thread3).start();
}
}
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);
}
}
}
输出的部分结果如下: