實現方案:java
1.調用線程的join方法:阻塞主線程ide
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方法: 線程