比方說,我想「暫停」一個線程,以便其他線程可以更高效地運行。阻塞變得毫無意義(或幾乎毫無意義)之前的最短休眠時間是多少?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. Java Thread.sleep long或int?
- 2. Robot.delay(int)與Thread.sleep(long)
- 3. Thread.sleep效率()
- 4. 將long []轉換爲Long []的最有效方法
- 5. Thread.Sleep會影響ThreadState嗎?
- 6. 在ANSI C中是long double有用嗎?
- 7. 我的代碼Thread.sleep有效,但不是隱式等待?
- 8. 關於long long long long
- 9. 虛假喚醒會影響Thread.sleep嗎?
- 10. unsigned long和unsigned long long有什麼區別?
- 11. Tomahawk12 tld有效嗎?
- 12. PHP「set_include_path」有效嗎?
- 13. 有沒有在Java中的Thread.Sleep
- 14. C long long golang
- 15. unsigned long long int
- 16. reinterpret_cast <unsigned long>無效的投射
- 17. unsigned long long to binary
- 18. Arduino long long int doc
- 19. long double vs long int
- 20. newlib-nano long long support
- 21. 這個「s」有效嗎?
- 22. Event.observe字段有效嗎? (prototype.js)
- 23. JavaScript =「js」?這有效嗎?
- 24. 函數應該有效嗎?
- 25. windows PID = 0有效嗎?
- 26. 這是有效的JSON嗎?
- 27. wx.TR_HAS_VARIABLE_ROW_HEIGHT沒有效果嗎?
- 28. 這是有效的XML嗎?
- 29. Treestore爲空 - JSON有效嗎?
- 30. 這是有效的yaml嗎?
我不認爲執行者可以預測線程何時空閒(或者他們可以嗎?) – someguy 2010-04-07 18:05:17