【发布时间】:2010-09-26 01:01:02
【问题描述】:
您认为获取线程工作结果的最佳方式是什么?想象一个线程进行一些计算,你如何警告主程序计算完成?
您可以每隔 X 毫秒轮询一次名为“作业已完成”的公共变量或其他内容,但随后您会比可用时更晚收到结果...主代码将浪费时间等待为他们。另一方面,如果你使用较低的 X,CPU 会被浪费很多次轮询。
那么,你要怎么做才能知道线程或某些线程已经完成了他们的工作?
抱歉,如果它看起来与其他 question 相似,我想这可能是 eben 答案的原因。我的意思是运行大量线程并知道它们何时完成,而不是轮询它们。
我更多地考虑使用批次线程在多个 CPU 之间共享 CPU 负载,并知道批次何时完成。我想这可以用 Future 的对象来完成,但是阻塞 get 方法看起来很像隐藏的锁,而不是我喜欢的东西。
感谢大家的支持。虽然我也喜欢 erickson 的回答,但我认为 saua 是最完整的,也是我'将在我自己的代码中使用。
【问题讨论】:
-
这和question非常相似。
-
> 并知道批次何时完成。你为什么想知道这个?你需要那个批次的东西吗?或者您想知道何时可以安排更多任务?
标签: java multithreading