比方說,我想「暫停」一個線程,以便其他線程可以更高效地運行。阻塞變得毫無意義(或幾乎毫無意義)之前的最短休眠時間是多少?Thread.sleep(long)有效嗎?
3
A
回答
2
我期望任何量的睡眠都至少是調用yield()
的功能等價物,所以從來沒有一點是「毫無意義的」。確實有一點,一個小的值本質上是無法區分的,因爲等待操作系統返回到線程的開銷比一個小的睡眠時間長。這可能發生在5-10範圍內的某個地方,但它當然是特定於操作系統的。
2
這很難一概而論,並會因您的具體問題而有所不同。但是,我不會自己睡覺來管理線程。您可以將線程放入Executor
並讓它管理它們。您也可以使用PriorityQueue來訂購您的任務。
2
IIRC甚至Thread.sleep(0)將使線程屈服,允許其他具有相同或更高優先級的線程運行。
這取決於線程的優先級......我的理解是,Thread.sleep有效地產生線程,並將其優先級設置爲睡眠期間的最低值。
正如其他人所提到的,你可能不應該使用它來手動安排你的線程。但是,如果您已經共享互斥鎖,則可能需要釋放它們,然後執行Thread.sleep以幫助解決線程鎖定情況,這很有用。
+0
這不是關於調度;這是關於更有效地處理資源。 – someguy 2010-04-07 18:01:27
相關問題
- 1. Robot.delay(int)與Thread.sleep(long)
- 2. Java Thread.sleep long或int?
- 3. 在C中,'long unsigned'與'unsigned long'一樣有效嗎?
- 4. Thread.sleep效率()
- 5. 在LP64上,`long'與`long long`相同嗎?
- 6. Java的Thread.sleep在這裏會有用嗎?
- 7. 將long []轉換爲Long []的最有效方法
- 8. Thread.Sleep會影響ThreadPool嗎?
- 9. Thread.Sleep會影響ThreadState嗎?
- 10. 在ANSI C中是long double有用嗎?
- 11. 設置<pair <long long long long>>第一秒不支持成員嗎?
- 12. Thread.sleep沒有編譯
- 13. 是Thread.Sleep(Timeout.Infinite);比while(true){}更高效?
- 14. 我的代碼Thread.sleep有效,但不是隱式等待?
- 15. 關於long long long long
- 16. Cross-Native GCC 4.8 Build:libcpp錯誤:long long無效轉換爲off_t(又名long int)
- 17. 虛假喚醒會影響Thread.sleep嗎?
- 18. 從'long int'無效轉換爲'long int *'-fpermissive
- 19. java httpsession有效嗎?
- 20. Tomahawk12 tld有效嗎?
- 21. PHP「set_include_path」有效嗎?
- 22. Thread.Sleep();睡所有的程序
- 23. double to int(或long long long)轉換有時不好
- 24. unsigned long和unsigned long long有什麼區別?
- 25. unsigned long long VS unsigned long long int
- 26. long long long bitwise operation error pic32
- 27. Java Thread.sleep()
- 28. C long long golang
- 29. unsigned long long int
- 30. Long long type defintion
我不認爲執行者可以預測線程何時空閒(或者他們可以嗎?) – someguy 2010-04-07 18:05:17