我启动了几个线程,但没有它们的引用以便通过信号或其他方式停止。
例如,我无法像这样传递变量 running=false
给这些线程,因为我没有它们的引用,只有它们的名称。
我正在使用一个 ThreadGroup
,并且我总是有它的引用。所以我可以做这样的事情。似乎它不起作用。
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查询。