나는 블로킹 기능을 사용하여 프록시를 호출하고 무엇인가를주기를 기다리는 스레드를 실행 중이다.차단 작업을 기다리는 스레드를 중단 하시겠습니까?
나는 휘발성 부울과 중단의 알려진 패턴을 사용했습니다,하지만 난 그것을 작동합니다 확실하지 않다 :
: 나는Unreachable catch block for InterruptedException. This exception is never thrown from the try statement body
InterruptedException
에 대한 catch 블록을 추가하려고 할 때, 나는 오류
그래서 결코 InterruptedException
을 얻지 못한다면 결코 차단 조치에서 벗어날 수 없으므로 결코 멈추지 않을 것입니다.
나는 약간 당황합니다. 어떤 생각?
public void run() {
Proxy proxy = ProxyFactory.generateProxy();
Source source;
while (!isStopped) {
try {
source = proxy.getPendingSources();
scheduleSource(source);
} catch (Exception e) {
log.error("UnExpected Exception caught while running",e);
}
}
}
public void stop() {
this.isStopped = true;
Thread.currentThread().interrupt();
}
고마워요! 나에게 몇 분이 걸렸지 만 나는 "Stop"에 대해 내가 잘못한 것을 깨달았다. 이 경우 스레드가 "중지"요청을 받으면 차단 조치 대기를 중지합니까? – Yossale
아니면 휘발성 부울을 사용하여 중지 플래그를 표시하십시오. –
@Tom scheduleSource() 또는 proxy.getPendingSources()가 차단 된 경우 어떻게됩니까? 나는 그 전화가 stop()에 의해 인터럽트되기를 원한다고 가정한다. – Kevin