나는 무거운 데이터베이스 연산을 수행하는 자바 쓰레드를 가지고있다. 나는이 자바 스레드를 죽일 API를 코딩하고있다. executor 프레임 워크를 사용하고 있습니다. 그래서 미래가되면 future.cancel()을 호출 한 다음 스레드 인터럽트를 확인합니다.자바 : DB 작업을 수행하는 스레드 죽이기
위의 로직은 스레드가 DB 조작을 수행하는 시나리오를 제외하고는 잘 작동합니다. 스레드를 죽이는 것은 DBA 간섭을 의미하는 DB 연결 종료와 관련됩니다.
내 목표는 지원 팀의 개입이 필요없는 API를 만드는 것입니다.
이 문제를 해결하는 방법에 대한 아이디어는 매우 유용 할 것입니다.
CODE :
private void killBatches1() {
if (killBatchRunning.compareAndSet(false, true)) {
try{
Iterator<Future<?>> futureIterator = futuresForBatch.iterator();
while (futureIterator.hasNext()) {
Future<?> future = futureIterator.next();
if (future.cancel(true))
;
futureIterator.remove();
}
}finally{
killBatchRunning.set(false);
}
}
코드는 어디에 있습니까? – TheWhiteRabbit
일부 코드는 매우 유용 할 것입니다. –
코드를 추가했습니다. 질문은 논리에 더 많은 것이었고 그래서 나는 그것을 붙여 넣지 않았고 사람들은 단지 downvotes로 두드렸다 !! – Lokesh