并发基础(七):Thread 类的sleep()、yeild()、join()
1、Thread.sleep(long millis )
sleep( )是一個(gè)靜態(tài)方法,讓當(dāng)前正在執(zhí)行的線程休眠(暫停執(zhí)行),而且在睡眠的過程是不釋放資源的,保持著鎖。
在睡眠的過程,可以被中斷,注意拋出InterruptedException異常;
作用:
1、暫停當(dāng)前線程一段時(shí)間;
2、讓出CPU,特別是不想讓高優(yōu)先級(jí)的線程讓出CPU給低優(yōu)先級(jí)的線程
2、Thread.yeild()
同樣也是一個(gè)靜態(tài)方法,暫停當(dāng)前正在執(zhí)行的線程,線程由運(yùn)行中狀態(tài)進(jìn)入就緒狀態(tài),重新與其他線程一起參與線程的調(diào)度。
作用:
線程讓步,顧名思義,就是說當(dāng)一個(gè)線程使用了這個(gè)方法之后,它就會(huì)把自己CPU執(zhí)行的時(shí)間讓掉,讓自己或者其它的線程運(yùn)行。但是,這種讓步只對(duì)同優(yōu)先級(jí)或者更高優(yōu)先級(jí)的線程而言,同時(shí),讓步具有不確定性,當(dāng)前線程也會(huì)參與調(diào)度,即有可能又被重新調(diào)度,那么就沒有達(dá)到讓出CPU的效果了。
3、Thread.join()
JDK中提供三個(gè)版本的join方法:
- join( ):等待該線程終止。
- join(long millis):等待該線程終止的時(shí)間最長為 millis 毫秒。超時(shí)為 0 意味著要一直等下去。
join(long millis, int nanos):等待該線程終止的時(shí)間最長為 millis 毫秒 + nanos 納秒。
作用:
join方法的作用是父線程等待子線程執(zhí)行完成后再執(zhí)行,換句話說就是將異步執(zhí)行的線程合并為同步的線程。
運(yùn)行結(jié)果:
線程childThread結(jié)束,Count a = 11
線程main結(jié)束
出處:https://www.cnblogs.com/jinggod/p/8485169.html
總結(jié)
以上是生活随笔為你收集整理的并发基础(七):Thread 类的sleep()、yeild()、join()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用IDEA基于Maven搭建多模块聚合
- 下一篇: 并发基础(八) java线程的中断机制