多執行緒插隊 join

2021-10-24 17:38:27 字數 1924 閱讀 1128

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...