Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 以编程方式停止PlayFramework作业_Asynchronous_Interrupt_Playframework 1.x_Jobs - Fatal编程技术网

Asynchronous 以编程方式停止PlayFramework作业

Asynchronous 以编程方式停止PlayFramework作业,asynchronous,interrupt,playframework-1.x,jobs,Asynchronous,Interrupt,Playframework 1.x,Jobs,我试图以编程方式停止PlayFramework中正在运行的作业。当作业运行时,我保存启动时返回的“Promise”对象。此对象有一个“cancel”方法,该方法应取消计划作业或停止现有作业,但它似乎什么都不做 还有什么其他方法可以停止正在运行的作业 我认为您需要自己实施有序的取消cancel不会仅仅结束线程的执行,因为这可能会导致不期望的结果。解决方案也很类似,不推荐使用Thread.stop(),而应该使用Thread.interrupt() 检查工作是否偶尔被取消。如果在循环中运行繁重的计算

我试图以编程方式停止PlayFramework中正在运行的作业。当作业运行时,我保存启动时返回的“Promise”对象。此对象有一个“cancel”方法,该方法应取消计划作业或停止现有作业,但它似乎什么都不做


还有什么其他方法可以停止正在运行的作业

我认为您需要自己实施有序的取消
cancel
不会仅仅结束线程的执行,因为这可能会导致不期望的结果。解决方案也很类似,不推荐使用
Thread.stop()
,而应该使用
Thread.interrupt()


检查工作是否偶尔被取消。如果在循环中运行繁重的计算,请检查它是否仍应在开始时继续运行。您甚至可以通过这种方式返回部分结果

我认为您需要自己实施有序的取消
cancel
不会仅仅结束线程的执行,因为这可能会导致不期望的结果。解决方案也很类似,不推荐使用
Thread.stop()
,而应该使用
Thread.interrupt()


检查工作是否偶尔被取消。如果在循环中运行繁重的计算,请检查它是否仍应在开始时继续运行。您甚至可以通过这种方式返回部分结果

问题是PlayFramework中的“作业”本身不是线程,我需要从运行它的线程的外部中断它。我不想实现“检查它是否应该运行”类型的模式,因为如果它由于某种原因卡在循环中,它可能不会退出。中断异常在这里会更成功。@Iv4n您使用的是什么作业和未来/承诺实现?java、scala、play1、play2和akka有很多不同的版本。如果您使用的是Play2.x,那么如果您担心陷入循环,那么应该有一些方法来运行带有超时的futures。我只使用Play1.x-Java。我遇到过类似的情况,不幸的是,不得不求助于“检查”类型的模式。我的网站不得不处理从浏览器中取消作业的问题,考虑到我们的网站已加载了平衡,我想不出一种方法来确保将取消发送到正确的web服务器。“如果它因为某种原因被困在循环中”这句话让我很害怕,你可能想花点时间想想为什么你会被困在这样一个循环中,并在这个循环之前进行检查。问题是PlayFramework中的“作业”本身不是一个线程,我需要从它运行的线程的外部中断它。我不想实现“检查它是否应该运行”类型的模式,因为如果它由于某种原因卡在循环中,它可能不会退出。中断异常在这里会更成功。@Iv4n您使用的是什么作业和未来/承诺实现?java、scala、play1、play2和akka有很多不同的版本。如果您使用的是Play2.x,那么如果您担心陷入循环,那么应该有一些方法来运行带有超时的futures。我只使用Play1.x-Java。我遇到过类似的情况,不幸的是,不得不求助于“检查”类型的模式。我的网站不得不处理从浏览器中取消作业的问题,考虑到我们的网站已加载了平衡,我想不出一种方法来确保将取消发送到正确的web服务器。“如果它因为某种原因卡在循环中”这句话让我很害怕,你可能想花点时间想想为什么你会被卡在这样的循环中,并在这个循环之前进行检查。