簡體   English   中英

Thread.sleep(長)的效果如何?

[英]How effective is Thread.sleep(long)?

假設我想“暫停”一個線程,以便其他線程可以更有效地運行。 在阻塞變得毫無意義(或幾乎沒有意義)之前,最小睡眠時間是多少?

這很難概括,並會因您的具體問題而有所不同。 但是,我不會自己使用睡眠來管理線程。 您可以將線程放入Executor並讓它管理它們。 您還可以使用PriorityQueue來訂購任務。

IIRC甚至Thread.sleep(0)將導致線程產生,允許其他具有相同或更高優先級的線程運行。

它取決於線程優先級...我的理解是Thread.sleep有效地產生線程,並將其優先級設置為睡眠持續時間的最低值。

正如其他人所提到的,您可能不應該使用它來手動安排線程。 但是,如果您有共享的互斥鎖,則可能需要釋放它們,然后執行Thread.sleep以幫助解決線程鎖定情況。

我希望任何睡眠量至少與調用yield()的功能相當,所以從來沒有一點是“無意義的”。 絕對有一點,小值基本上是無法區分的,因為等待操作系統返回到你的線程的開銷比一個小的休眠時間長。 這可能發生在5-10范圍內的某個地方,但當然它將是特定於操作系統的。

暫無
暫無

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

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