1. 程式人生 > >二十五、併發程式設計之join應用與實現原理剖析

二十五、併發程式設計之join應用與實現原理剖析

  • 1、join有什麼用呢?
    當一個執行緒正在進行中的時候,如果我們想呼叫另外一個執行緒的話,這時我們可以使用join。
  • 2、join方法的底層原理,簡單來說就是,join方法能把所呼叫join方法的執行緒進入休眠狀態(wait()),等執行完joinThread執行緒之後,會自動呼叫notifyAll方法叫醒所有處於wait狀態的執行緒。

看過AQS的朋友,應該很容易理解join方法。但是有一點是,能用join方法實現的功能,都有其他的實現方式,目前找不到join方法和其他方法對比起來有什麼優點之處,既然存在了,那就是有道理。

public class Demo
{ public void a(Thread joinThread) { System.out.println("方法a執行了。。。"); joinThread.start(); try { joinThread.join();//執行緒加塞 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("a方法執完畢。。。"); } public void b() { System.out.println("加塞執行緒執行了。。。"); try { Thread.
sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("加塞執行緒執行完畢。。。"); } public static void main(String[] args) { Demo demo = new Demo(); Thread joinThread = new Thread(new Runnable() { @Override public void run() { demo.b(); } }); new
Thread(new Runnable() { @Override public void run() { demo.a(joinThread); } }).start(); } }