Scala 用线程进行繁重的计算

Scala 用线程进行繁重的计算,scala,Scala,我有一个函数,它的运行时间是指数级的,应该在后台执行 如果用户不希望等待结果,他应该能够通过按下按钮取消计算。我不想在这个计算中保留任何东西 由于我找不到取消计算的好方法,我将算法嵌入了一个类扩展线程,还检查了算法中的中断标志 在我看来,这破坏了算法的“美”,因为它现在只适用于这个线程类 我还没有对期货或演员做太多工作。有可能用它们来解决这类问题吗?你会怎么做?提前感谢。介绍了终止参与者的方法,这些方法可能适用于您的问题。根据任务的性质,您可以简单地使用Kill和默认的主管策略来停止所有处理,或

我有一个函数,它的运行时间是指数级的,应该在后台执行

如果用户不希望等待结果,他应该能够通过按下按钮取消计算。我不想在这个计算中保留任何东西

由于我找不到取消计算的好方法,我将算法嵌入了一个
扩展
线程
,还检查了算法中的
中断
标志

在我看来,这破坏了算法的“美”,因为它现在只适用于这个线程类


我还没有对
期货
演员
做太多工作。有可能用它们来解决这类问题吗?你会怎么做?提前感谢。

介绍了终止参与者的方法,这些方法可能适用于您的问题。根据任务的性质,您可以简单地使用Kill和默认的主管策略来停止所有处理,或者通过发送给自身的消息将处理分为更小的步骤,然后使用毒药。有关停止参与者的更多信息,包括清理和重新启动选项。

为什么要使用线程。你打算一次运行两个线程吗?我使用线程是因为我不希望GUI被阻塞。为什么不将算法放在一个单独的类中,比如Utils类,并在其中创建一个静态方法呢。在线程内部调用它。不要将算法嵌入到线程类中,使用Runnable,然后将其馈送到线程中。Runnable的作用类似于一个函数,与线程管理分离(但如果请求中断,它仍然能够自行终止)。@om nom nom@flavian假设函数是
f()
,并且一个方法
onCancel()
将结束计算。你能举一个小例子来说明你的建议吗?