我启动了几个线程,但我没有他们的引用可以通过信号或其他方式停止。例如,我不能将变量传递running=false
给那些线程,因为我没有它们的引用,但有它们的名称。
我正在使用 aThreadGroup
并且总是有它的参考。所以我可以做这样的事情。似乎它不起作用。
Thread[] threads = new Thread[threadGroup.activeCount()];
int count = threadGroup.enumerate(threads);
for(int i = 0; i < count; i++){
threads[i].interrupt();
}
这是我的线程示例。
public void run{
try{
//myDAO.getRecords();
//this takes 30seconds to 60
//returns about 3 millions of records
}catch(Exception e){
//log
}
}
当这个线程正在执行时,我想在中间停止它。无论如何,数据库查询正在运行,但我想停止获取结果。
即使我打电话,我仍然得到结果interrupt()
。有没有其他方法可以做到这一点,或者我做错了什么?最终的任务是取消来自 Java 的长时间运行的 sql 查询。