首页
学习
活动
专区
圈层
工具
发布

多线程
EN

Stack Overflow用户
提问于 2010-10-15 14:57:07
回答 3查看 443关注 0票数 0

如何确定哪个线程正在等待更多时间?

我的要求是,在同步的方法中,当一个线程完成它的工作时,我希望允许等待时间最长的线程。我希望我的问题有意义。

EN

回答 3

Stack Overflow用户

发布于 2010-10-15 15:21:55

这一切都取决于您使用的语言和/或环境。据我所知,在Java中没有对此的内在支持,如果多个线程正在等待进入同步方法,那么当进入可能时,系统会选择一个任意的线程来运行。

如果您使用Java的wait() / notify(),那么您可以控制通知哪些线程,因此可以构建自己的优先级机制,例如,您可以有一个简单的队列,每个线程在自己的wait()之前添加自己,然后您只需从队列中取出最上面的项并通知该线程。

票数 2
EN

Stack Overflow用户

发布于 2010-10-15 18:49:00

您不应该也几乎肯定不需要这样做。

线程环境将为您调度线程。

如果软件设计是这样的,这似乎是一个问题,那么对于抢占式线程环境来说,设计是不正确的。

您可能想要做的事情更像是管理和区分工作单元的优先级,例如,您可以按照工作到达的顺序进行服务工作。

换句话说,在您的设计中,工作处理的顺序不应该取决于运行哪个线程,而是取决于您对如何将工作分配给线程的设计。

票数 1
EN

Stack Overflow用户

发布于 2012-09-13 21:15:16

@djna Java不允许你选择通知哪个线程。如果队列中有10个线程,则可以通知其中任何一个线程。

这可以通过使用并发包中的lock/condition接口来完成。在这里,您可以将这些线程中的每个线程与一个条件相关联,然后从该队列中取出一个项,并用信号通知映射到该线程/任务的条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3940112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档