撩妹方式,你值得拥有!!
????線程的狀態
????????????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()必須等被調用線程結束后才能返回。
總結
以上是生活随笔為你收集整理的撩妹方式,你值得拥有!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css边距设置
- 下一篇: 盘古石杯电子取证比赛WP