我发现这个解决方案知道一个线程是否被中断了.
public class OurThread extends Thread(){
private volatile boolean stop = false;
public void run(){
while (!stop) {
//Do your actions
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我的run方法只执行一次,所以将insisde放在while循环中是没有意义的.我发现的另一种方法是检查Thread.isInterrupted()标志,然后终止线程.我的run()方法很长,所以我必须检查很多次这种情况使我的代码变脏.
我必须将它应用到四个不同的过程中,所以我试图找到一个更简单,更清洁的方法.我希望是否有类似的东西:
try{//my code}
catch(interrumption)
Run Code Online (Sandbox Code Playgroud)
问题是,由于我的线程是通过使用future.cancel()进行中断的,因此我的run()代码中没有抛出中断,然后我也无法做到这一点.
有什么建议吗?到目前为止,如果线程被取消,我会在代码之间检查很多次.谢谢 :)
我在servlet.xml中有当前作业和触发器
<bean id="actualizacionAsistencias" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="asistenciasManager" />
<property name="targetMethod" value="run" />
</bean?
<bean id="asistenciasTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="actualizacionAsistencias" />
<property name="cronExpression" value="0 1 1 * * ?" />
</bean>
Run Code Online (Sandbox Code Playgroud)
有没有办法添加参数?我需要方法'run'在执行时重新接收'true'(布尔值).