亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

join方法使其他線程都停止,也包括主線程嗎?

join方法使其他線程都停止,也包括主線程嗎?

正在回答

4 回答

這篇文章說得很清楚了。

當前的線程阻塞,等待調用join()的線程執行。當前的線程可以是 “調用了join()的線程之外的任意線程”。

java中的Thread類的join

join是Thread的實例方法,官方解釋為:等待該線程終止。

其作用就是將調用join的線程優先執行,當前正在執行的線程阻塞,直到調用join方法的線程執行完畢或者被打斷,主要用于線程之間的交互。

還有兩個重載的方法:

1、join(long?millis),等待該線程終止的時間最長為 millis 毫秒。為 0 意味著要一直等下去。

2、join(long?millis, int?nanos),等待該線程終止的時間最長為 millis 毫秒 + nanos 納秒



1 回復 有任何疑惑可以回復我~

join不是讓所有線程都停止,join只是讓主線程停止。

看下面的代碼,如果把thread.sleep注釋掉,再運行,有一定概率程咬金打完都謝幕了,軍隊線程還在執行。

這說明join只是讓主線程停止,而不是讓所有線程都停止。這一點老師講的應該是有誤的。

https://img1.sycdn.imooc.com//5cc0073b0001ef5109610768.jpg

0 回復 有任何疑惑可以回復我~
#1

qq_慕圣2566072

如果你在軍隊戰斗的線程中執行join方法呢?
2019-06-20 回復 有任何疑惑可以回復我~
#2

精慕門7595355

老師講的有沒問題我不知道,但我知道你的說法有問題:join不是讓所有線程都停止,join只是讓主線程停止。 你再看看,當程咬金的線程調用join()方法時,是不是再也沒出現軍隊線程的執行過程? join()方法調用后是讓其它線程等待當前進程結束,不代表當前進程結束后,其它進程也結束,所以程咬金打完了之后,軍隊還會打。
2019-07-17 回復 有任何疑惑可以回復我~

輸出結束語的就是主線程,所以也包括

0 回復 有任何疑惑可以回復我~

是的,主線程把CPU控制權交出來給調用join()方法的線程。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
深入淺出Java多線程
  • 參與學習       186072    人
  • 解答問題       502    個

帶你一起深入淺出多線程,掌握基礎,展望進階路線

進入課程

join方法使其他線程都停止,也包括主線程嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號