1. 程式人生 > >線程並行執行轉為串行的法寶 join()

線程並行執行轉為串行的法寶 join()

運行 catch exception str lis string art interrupt new t

如果沒有經過特殊處理,線程和線程之間是並行運行的,如何讓它們串行執行呢? (1)一種是使用無參的join(),等到另一個線程執行完畢再繼續運行; (2)一種是使用帶參的join(long millis) ,等待一定的時間後,無論另一個線程是否執行完畢,都繼續執行。 public class Thread1 extends Thread { @Override public void run() { System.out.println("線程Thread1開始執行"); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("線程Thread1執行完畢"); } } public class Thread2 extends Thread { private Thread1 thread1; public Thread2(Thread1 thread1) { this.thread1 = thread1; } @Override public void run() { try { // 時間超過了1000ms,則放棄等待,繼續執行 thread1.join(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("線程Thread2開始執行"); System.out.println("線程Thread2執行完畢"); } public static void main(String[] args) { Thread1 t1 = new Thread1(); Thread2 t2 = new Thread2(t1); t1.start(); t2.start(); } }

線程並行執行轉為串行的法寶 join()