Java - остановка длинного потока, который обращается к базе данных
Я запускаю пару потоков, но у меня нет их ссылок, чтобы остановить, сигнализируя или что-то. Например, я могупередать переменную как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()
, Есть ли другие способы сделать это или я сделал что-то не так? В конечном итоге задача состоит в том, чтобы отменить длительный SQL-запрос из Java.