【发布时间】:2013-05-16 13:59:27
【问题描述】:
我启动了几个线程,但我没有通过信号或其他方式停止它们的引用。
例如,我不能将像 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 查询。
【问题讨论】:
标签: java multithreading