Я использую стороннюю библиотеку для обработки большого количества наборов данных. Процесс очень часто переходит в бесконечный цикл (или заблокирован - не знаю, почему и не может попасть в код). Я хотел бы убить это после установленного времени и продолжить следующий случай. Простым примером является:убивающий бесконечный цикл в java
for (Object data : dataList) {
Object result = TheirLibrary.processData(data);
store(result);
}
processData обычно занимает 1 секунду макс. Я хотел бы установить таймер, который убивает processData() после, скажем, 10 секунд
EDIT Я был бы признателен за фрагмент кода (я не практикован в использовании Threads). Подход Executor полезен, но я не совсем понимаю, с чего начать. Кроме того, псевдокод для более обычного подхода является слишком общим для меня для кодирования.
@Steven Schlansker - предполагает, что если приложение thirdparty не ожидает прерывания, оно не будет работать. Снова детали и примеры будут оценены
EDIT Я получил точное решение, которое я хотел от своих коллег Сэма Адамса, который я добавляю в качестве ответа. Он имеет более подробную информацию, чем другие ответы, но я дам им оба голоса. Я буду отмечать Сэма как утвержденный ответ
Это определенно бесконечный цикл, или он может быть заблокирован? Профилирование закрытой библиотеки может помочь (если только она не будет устранена). –
@ Jim Downing Да, это может быть заблокировано - не знаю, почему –
это можно сделать в JMX? – amphibient