Тайм-аут задача с SwingWorker Java

Я пытаюсь реализовать a SwingWorker класс в рамках моего приложения. Существует ли способ установить отрезок времени что, после которого, "испытывает таймаут" SwingWorker? Я думал это, возможно, бросок OutOfTime исключение, которое я могу поймать и затем иметь дело с. Я просто не уверен, как реализовать его.

Спасибо за всю Вашу справку!

6
задан kleopatra 12 March 2012 в 12:13
поделиться

2 ответа

Почему бы не встроить вашу задачу в Runnable, бросить ее в новый однопоточный ExecutorService и затем выполнить get() на результирующем Future с соответствующим таймаутом. Это даст вам функциональность таймаута, поскольку get() вызовет исключение, если задание не завершится вовремя.

4
ответ дан 17 December 2019 в 02:27
поделиться

Короткий ответ - "это сложно", в зависимости от ваших требований. Я настоятельно рекомендую прочитать Java Concurrency In Practice.

Основное, что вы можете сделать, это (а) убедиться, что Runnable вашего SwingWorker'а дружественен к прерыванию, и (б) установить таймер (или использовать блокирующий вызов get(), упомянутый Брайаном) для отмены вашего Future.

1
ответ дан 17 December 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: