二十五、併發程式設計之join應用與實現原理剖析
阿新 • • 發佈:2019-01-03
- 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();
}
}