執行緒的狀態
1.new:新建狀態。就是物件剛被new出,還有start()。
2.runnable:可執行狀態。呼叫start(),此時執行緒就是runnable狀態,可能正在執行也可能沒有執行(取決於作業系統提供的執行時間)。
3.blocked:阻塞狀態。
4.waiting:等待狀態。執行緒暫時不活動,並且不執行任何**,這此時執行緒消耗資源最小,直到執行緒排程器重新啟用。
5.time waitiing 超時等待裝填。 ps:和wating 狀態的區別是它可以在指定的時間自行返回。
6.terminated:終止狀態。表示當前執行緒已經執行完畢。
ps:1.run方法執行完畢正常退出; 2.沒有捕獲異常而終止run方法,執行緒終止。
sleep()
sleep()方法需要指定等待的時間,進入阻塞狀態,讓其他同優先順序或者高優先順序的執行緒得到執行的機會,
也可以讓低優先順序的執行緒得到執行機會。
注:sleep()方法不會釋放「鎖標誌」,也就是說如果有synchronized同步塊,其他執行緒仍然不能訪問共享資料。
wait()
wait()、notify()及notifyall(),這三個方法用於協調多個執行緒對共享資料的訪問,必須在synchronized語句塊內使用,呼叫wait(), notify()和notifyall()的任務在呼叫這些方法前必須擁有物件的鎖。注意,它們都是object類的方法,而不是thread類的方法。
注:wait()方法會釋放物件的「鎖標誌」。當呼叫某一物件的wait()方法後,會使當前執行緒暫停執行,並將當前執行緒放入物件等待池中,直到呼叫了notify()方法後,將從物件等待池中移出任意乙個執行緒並放入鎖標誌等待池中,只有鎖標誌等待池中的執行緒可以獲取鎖標誌, 它們隨時準備爭奪鎖的擁有權。當呼叫了某個物件的notifyall()方法,會將物件等待池中的所有執行緒都移動到該物件的鎖標誌等待池。
除了使用notify()和notifyall()方法,還可以使用帶毫秒引數的wait(long timeout)方法,效果是在延遲timeout毫秒後,被暫停的執行緒將被恢復到鎖標誌等待池。
此外,wait(),notify()及notifyall()只能在synchronized語句中使用,但是如果使用的是reentrantlock實現同步時使用reentrantlock.newcondition()獲取乙個condition類物件,然後condition的await(),signal()以及signalall()分別對應上面的三個方法。
yield()
yield()方法和sleep()方法類似,也不會釋放「鎖標誌」,區別在於,它沒有引數,即yield()方法只是使當前執行緒重新回到可執行狀態,所以執行yield()
的執行緒有可能在進入到可執行狀態後馬上又被執行,另外yield()方法只能使同優先順序或者高優先順序的執行緒得到執行機會,這也和sleep()方法不同。
join()
join()必須等被呼叫執行緒結束後才能返回。
Mock Vue 你值得擁有
好久沒寫隨筆了,最近難得抽得半日閒,搞一手前後分離介面除錯,很舒服,今天介紹一下乙個很有誠意的工具 mock 官網點我 園友精彩博文點我 csdn精彩博文點我 簡單的說,mock的作用就是攔截ajax請求,把假的資料傳入 函式中,在後端介面還未開發完成的時候,前端就已經可以萬事大吉喝茶釣魚去了 好,...
部落格營銷,你值得擁有
從我接觸這門課程起,便對其產生了極其濃厚的興趣。這門課程順應了當今網際網路聯通天下的浪潮,即所謂的萬物互聯。如果學好這門課程,那麼網際網路將會成為我們發展自身的乙個香餑餑。借助網際網路這個平台,我們能夠學習各種電子商務經驗,了解電子商務模式,盈利模式,知道各種搜尋引擎平台,能夠解決這些平台現如今存在...
「黑客」必備書籍 你值得擁有!
如果您想學習黑客並成為道德黑客,那麼這些最好的黑客書籍將帶你走上正軌。學習黑客,如果你是乙個完整的初學者,並不是一件容易的事,雖然網上有很多資源,但是黑客資源往往很少,因此閱讀書籍通常很有幫助。黑客可能會被不道德地使用,還可能對個人和公司造成傷害和破壞。但道德黑客實際上對公司有利,因為他們可以在入侵...