我在Java中的相当标准的机制来解决这个问题:从Java并发迁移到Scala的并发
- 工作项目必须安排在特定的时间
- 执行,然后每个工作项目必须等待成为真正的
- 工作项目的条件应当是撤销
我使用的解决方案如下:
- 有一个单线程调度来安排我的工作项目
- 有一个
ExecutorService
(可能是多线程) - 排定的每个工作项目然后提交实际工作的
ExecutorService
。返回的Future
缓存在地图中。完成服务用于从缓存中删除将来当工作完成 - 项目可以通过缓存期货
当然被取消,我的遗嘱执行人必须至少一样大的数量阻碍我期望有的工作项目,但这在实践中并不是问题。
所以现在我在Scala中编码并使用actor框架。假设我的工作项目可以封装在发送给演员的事件中:
- 我将使用什么机制来安排工作项目在特定时间?
- 如果工作项目是发送给演员的事件,我如何确保后备线程池的数量大于可同时阻止的项目数
- 如何导致以前计划的工作项目被取消?
您能否详细说明“成为真的条件”是什么意思?这是全球性的国家吗?它是I/O吗? – Apocalisp 2009-06-05 16:14:21
我只是意味着,作为工作的一部分,这个过程可能不得不阻止发生的事情(如文件到达) – 2009-06-05 17:19:00