|
|
1
2
ExecutorService的设计目的不是为其Callable/Runable提供“线程相关性”。有人可能会说“这就是重点”,API是用来让程序员处理工作描述(Callable)的,而不是线程处理。 您的设计,即“每个线程都有一个随机数据生成器”,不适合ExecutorService,原因如下:
因此,我强烈建议您定义一些其他方式来将工作单元与数据生成器关联起来,因为“线程实例”通常是不可靠的,至少不能通过Executor Service实现。 例如,当你说
我知道,您将总是发送一定数量的Callable,并且需要每个Callable处理特定生成器发出的特定数据集。假设我们有给定数量的任务和3个生成器,任务(N)将使用生成器
为了使结果可重复,您还需要使用同一生成器的任务不并发执行(您希望通过线程关联实现什么?)。 有一定数量的模式可以实现这一点。 1是:重构为生产者/消费者(反过来做)
在你的执行者服务中做3个任务,每个任务都听一个
2是:自己完成任务分派任务。(用粗糙的方式)
首先,重构可调用项,使其具有到需要使用的生成器的链接。
然后,在主线程上,构建每个生成器要运行的任务列表。
3是:与2相同,效率较低,但风险较小而不是从内部可调用程序中调度可调用程序,而是只从主线程中调度,等待未来。 通过这两种方式中的任何一种,都不能保证哪些任务将首先完成或最后完成,但可以保证您调度的工作单元与您控制的数据生成器可预测地关联,并且它们将按照您调度的顺序执行。希望这已经足够了。 |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 2 年前 |
|
|
András Takács · Python多线程错误 2 年前 |