实现方案:
1.调用线程的join方法:阻塞主线程
2.线程池
package com.java.thread.test;
public class MyThread01 implements Runnable {
@Override
public void run() {
System.out.println("当前线程:"+Thread.currentThread().getName());
}
}
package com.java.thread.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Ctest01 {
public static void main(String[] args) throws Exception {
MyThread01 myThread01 = new MyThread01();
Thread t1 = new Thread(myThread01,"thread01");
Thread t2 = new Thread(myThread01,"thread02");
Thread t3 = new Thread(myThread01,"thread03");
// 实现多条线程顺序执行
// 默认情况下,依次调用线程的start()方法,线程执行的顺序随机
//t1.start();
//t2.start();
//t3.start();
// 方法一:使用join()方法来阻塞主线程,线程得以顺序执行
t1.start();
t1.join();
t2.start();
t2.join();
t3.start();
t3.join();
// 方法二:
t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread:thread01");
}
},"thread01");
t2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread:thread02");
}
},"thread02");
t3 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("thread:thread03");
}
},"thread03");
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.submit(t1);
executorService.submit(t2);
executorService.submit(t3);
executorService.shutdown();
System.out.println("main ......");
}
}
执行测试类的main方法: