join合併執行緒,待此執行緒執行完成後,在執行其他執行緒,其他執行緒阻塞
package thread.lzy.www;
public
class
dblockedjoind01})
; t.
start()
;for
(int i=
0;i<
10;i++
) system.out.
println
("main.."
+i);}}
}
**中當i==4時,lambda插隊,直到lambda執行完後,才輪到main函式執行
執行結果:
main…0
main…1
lambda…0
main…2
lambda…1
main…3
lambda…2
lambda…3
lambda…4
lambda…5
lambda…6
lambda…7
lambda…8
lambda…9
main…4
main…5
main…6
main…7
main…8
main…9
例項二:
package thread.lzy.www;
public
class
dblockedjoind02
}class
father
extends
thread
catch
(interruptedexception e)
system.out.
println
("老爸接過煙,把零錢給了兒子");
}}class
sonextends
thread
catch
(interruptedexception e)
} system.out.
println
("趕緊買菸去。。。");
system.out.
println
("拿著煙回家了");
}}
這是乙個老爸讓兒子買菸的例項,只有兒子買完菸回來,老爸才能抽,把零錢給兒子,如果沒有join(17-23行**),執行結果:
爸爸和兒子買菸的故事
想抽菸,發現沒了
讓兒子去買中華
老爸接過煙,把零錢給了兒子
兒子接過老爸錢出去了
路邊有個遊戲廳,玩了10s
0秒過去了
1秒過去了
2秒過去了
3秒過去了
4秒過去了
5秒過去了
6秒過去了
7秒過去了
8秒過去了
9秒過去了
趕緊買菸去。。。
拿著煙回家了
可以看到,兒子還沒有買菸回來,爸爸卻接過煙,把零錢給了兒子,很顯然不合邏輯,所以在爸爸拿到香菸之前即24行**(system.out.println("老爸接過煙,把零錢給了兒子");
)前面加入join 讓兒子「插隊」當15 16行**即son執行完後,在執行24行
加入之後執行結果:
爸爸和兒子買菸的故事
想抽菸,發現沒了
讓兒子去買中華
兒子接過老爸錢出去了
路邊有個遊戲廳,玩了10s
0秒過去了
1秒過去了
2秒過去了
3秒過去了
4秒過去了
5秒過去了
6秒過去了
7秒過去了
8秒過去了
9秒過去了
趕緊買菸去。。。
拿著煙回家了
老爸接過煙,把零錢給了兒子
Java多執行緒 Join執行緒插隊
join 方法 waits for this thread to die.即 等待這個執行緒結束。1 程式中有兩個執行緒 執行緒a threada 執行緒b threadb 2 在 執行緒a 的run 方法中,呼叫了threadb.join 3 則 執行緒a 會在此段 出,暫停後續 的呼叫,等待 執...
執行緒之插隊 join方法
在現實生活中,有很多人,存在很多人插隊,例如 下課去食堂吃飯,別人都在排隊,打飯的阿姨你是家親戚,你到視窗,阿姨就給你打了慢慢的飯菜,讓別人羨慕,在程式中也有這種情況出現,a正在執行,b要插隊,a就得停下來,等b執行結束在去執行a具體看如下 public class testjoin impleme...
多執行緒 JOIN
join就是阻塞呼叫執行緒,直到該執行緒結束後,呼叫執行緒才能繼續執行。該影響只存在於執行join方法的執行緒和呼叫該執行緒的執行緒之間 如在t1執行緒中呼叫t2.join 則需要t2執行緒執行完後t1方能繼續執行 試一試 執行緒的插入 c 初學課堂 注意新增命名空間 using system.th...