Thraed.Abort()和Thread.Interrupt()之间有什么区别?如何以线程安全方式调用它们.如果提供简单的示例,它将会有所帮助.
我启动了几个线程,但我没有通过信号或其他东西来阻止它们.例如,我不能将变量传递running=false给那些线程,因为我没有它们的引用,但是有它们的名字.
我正在使用a ThreadGroup并且我总是参考它.所以我可以做这样的事情.似乎它不起作用.
Thread[] threads = new Thread[threadGroup.activeCount()];
int count = threadGroup.enumerate(threads);
for(int i = 0; i < count; i++){
threads[i].interrupt();
}
Run Code Online (Sandbox Code Playgroud)
这是我的帖子的一个例子.
public void run{
try{
//myDAO.getRecords();
//this takes 30seconds to 60
//returns about 3 millions of records
}catch(Exception e){
//log
}
}
Run Code Online (Sandbox Code Playgroud)
当这个线程正在执行时,我想在中间停止它.无论如何batabase查询正在运行,但我想停止获取结果.
即使我打电话,我仍然得到了结果interrupt().有没有其他方法可以做到这一点还是我做错了什么?最终任务是取消Java中长时间运行的SQL查询.