回覆列表
  • 1 # 我會天晴到底

    java中多執行緒常見的幾個引數:

    sleep:在指定的毫秒數內讓當前正在執行的執行緒休眠(暫停執行).

    此操作受到系統計時器和排程程式精度和準確性的影響。

    該執行緒不丟失任何監視器的所屬權。

    呼叫sleep的時候鎖並沒有被釋放。

    休眠

    Java SE5引入了更加顯示的sleep()作為TimeUnit類的一部分,這個方法允許你指定sleep()延遲的時間單元,因此可以提供更好的可閱讀性。

    wait:呼叫wait使執行緒掛起,直到執行緒得到了notify或notifyAll訊息,執行緒才會進入就緒狀態。

    使你可以等待某個條件發生變化,而改變這個條件超出了當前方法的控制能力。

    執行緒的執行被掛起,物件上的鎖被釋放。意味著另一個任務可以獲得這個鎖。

    因此在該物件中的其他synchronized方法可以在wait期間被呼叫。

    yield:相當於:我的工作已經做的差不多了,可以讓給別的執行緒使用CPU了。

    當呼叫yield時,你也是在建議具有相同優先順序的其他執行緒可以執行。

    對於任何重要的控制或在調整應用時,都不能依賴於yield。

    yield並不意味著退出和暫停,只是,告訴執行緒排程如果有人需要,可以先拿去,我過會再執行,沒人需要,我繼續執行

    呼叫yield的時候鎖並沒有被釋放。

    interrupt:中斷執行緒。

    Thread類包含interrupt()方法,因此你可以中止被阻塞的任務。

    這個方法將設定執行緒的中斷狀態。

    如果一個執行緒已經被阻塞,或者試圖執行一個阻塞操作,那麼設定這個執行緒的中斷狀態將丟擲InterruptedException。

    當丟擲該異常或者該任何呼叫Thread.interrupted()時,中斷狀態將復位。

    你在Executor上呼叫shutdownNow(),那麼它將傳送一個interrupt()呼叫給他啟動的所有執行緒。

  • 中秋節和大豐收的關聯?
  • 動漫《一人之下》434話!套路中的套路!陳金奎被王也反套路!啥情況?