我试图在没有任何运气的情况下寻找某种功能来杀死/打断Play中的工作!框架。
我错过了什么吗?或者玩过!实际上没有添加此功能?
答案 0 :(得分:1)
Java stop
类中没有类似Thread
方法的内容,因为有充分理由而被弃用。干净的方法是使用interrupted
布尔值。如果您扩展play.jobs.Job
,则可以轻松添加自己的interrupt
方法,从而更改作业状态。你可以这样做:
ComputeBigPrime primeJob = new ComputeBigPrime();
Promise<Integer> promisedPrime = primeJob.now();
// Timeout for interrupt
await("10s");
primeJob.interrupt();
// Wait until it's really finished to get the result
Integer prime = await(promisedPrime);
render(prime);
如果你想在多个请求之间执行中断,你可以使用
play.cache.Cache
并设置一个唯一的id(例如UUID)和信息,如果线程是是否中断。
当然这不起作用,如果你的工作挂在其他一些API调用中,你不能使用循环检查interrupted
布尔值,但如果你真的需要做一个艰难的{{在stop
中{1}},您可以尝试在控制器或工作中使用Thread
。因为它只是Java,它应该工作。