比方说,我想“暂停”一个线程,以便其他线程可以更高效地运行。阻塞变得毫无意义(或几乎毫无意义)之前的最短休眠时间是多少?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