对事件流进行大量处理的最后结果

时间:2013-12-22 08:43:18

标签: multithreading scala

有一系列事件由昂贵的算法处理,该算法执行很长时间。除了最后一次(每时每刻)之外的所有事件的结果都没有意义。我想处理一个事件,每次新事件到达时异步中断先前事件的处理。

有没有好的模式或技巧可以这样做?

我考虑过:

  • 演员(没有取消)
  • 期货(没有取消)
  • 线程(不清楚应如何选择最后一个事件,它们通常很重)
  • 线程池(需要自定义解决方案,而不是Scala方式?)

我倾向于选择具有自定义可中断tasklet(尚未设计)的池。 Scala有更好的选择吗?如果不是我应该如何实现我的tasklet?

1 个答案:

答案 0 :(得分:0)

我唯一可以建议的是使用Java期货并在Java未来上调用cancel。然后,您需要处理InterruptedException(用于阻止操作)并定期检查Thread.isInterrupted(用于计算密集型操作)。我猜你已经知道了。