簡體   English   中英

關於Java線程的睡眠狀態

[英]Regarding sleep state of a java thread

線程類中的sleep函數是靜態的。我讀取的sleep函數可以讓一個線程在特定時間睡眠,而其他線程正在運行。

由於睡眠函數是靜態的...在被調用時它將適用於所有線程。它將如何用於使特定線程保持睡眠狀態。

Thread.sleep();

將把從中執行此代碼的當前線程置於休眠模式

使當前正在執行的線程進入休眠狀態(暫時停止執行)達指定的毫秒數。

sleep方法不適用於所有線程,調用該方法可獲得其中的當前線程(可能使用另一個靜態方法Thread.currentThread())。 由於堆/棧可見性的原理,方法調用調用僅適用於當前線程,並且不修改任何靜態字段(它是自包含的)。

調用時,它將使當前正在執行的線程進入睡眠狀態。

根據java文檔:

 public static void sleep(long millis,
                             int nanos)
                      throws InterruptedException

使當前正在執行的線程進入休眠狀態(停止執行)指定的毫秒數加上指定的納秒數。 該線程不會失去任何監視器的所有權。

因此,當您調用sleep() ,您將使當前線程休眠。

由於該方法取決於 jvm 調用線程的狀態,而不取決於對象所代表的線程,因此該方法必須是靜態的,因此其他任何事情都會引起誤解。

實現它以在Thread實例上運行不會很好,因為如果持有對jvm資源的鎖定( 鏈接 ),則停止其他線程可能會導致整個jvm停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM