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