[英]Regarding sleep state of a java thread
線程類中的sleep函數是靜態的。我讀取的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.