제 3 자 라이브러리를 사용하여 많은 데이터 세트를 처리하고 있습니다. 이 프로세스는 매우 가끔씩 무한 루프에 빠지거나 차단됩니다. 이유는 모르지만 코드에 들어갈 수는 없습니다. 정해진 시간 후에 이것을 죽이고 다음 사건으로 넘어 가고 싶습니다. 간단한 예는 다음과 같습니다.자바에서 무한 루프를 죽이는
for (Object data : dataList) {
Object result = TheirLibrary.processData(data);
store(result);
}
processData는 일반적으로 최대 1 초가 걸립니다. 10 초 후에 processData()를 죽이는 타이머를 설정하고 싶습니다.
EDIT (실 사용에 익숙하지 않습니다.) 코드 스 니펫을 고맙게 생각합니다. Executor 접근법은 유용하게 보이지만 시작할 방법을 잘 모릅니다. 또한 더 일반적인 접근 방식의 의사 코드는 코딩하기에는 너무 일반적입니다.
@Steven Schlansker - 타사 앱이 인터럽트를 예상하지 않으면 작동하지 않는다고 제안합니다. 다시 세부 사항과 예제가 인정 될 것입니다.
EDIT 제 동료 인 샘 애덤스가 원했던 정확한 해결책을 얻었습니다. 그것은 다른 답변보다 더 자세한 내용을 가지고 있지만, 나는 그들에게 두 표를 줄 것이다. Sam을 승인 된 응답으로 표시합니다.
확실히 무한 루프에 있습니까? 아니면 차단되었을 수 있습니까? 닫힌 라이브러리를 프로파일 링하면 (obfusticated가 아닌 한) 도움이 될 수 있습니다. –
@Jim Downing 예, 차단 될 수 있습니다. –
이 JMX에서이 작업을 수행 할 수있는 이유가 무엇인지 모르십니까? – amphibient