Я пытаюсь реализовать a SwingWorker
класс в рамках моего приложения. Существует ли способ установить отрезок времени что, после которого, "испытывает таймаут" SwingWorker? Я думал это, возможно, бросок OutOfTime
исключение, которое я могу поймать и затем иметь дело с. Я просто не уверен, как реализовать его.
Спасибо за всю Вашу справку!
Почему бы не встроить вашу задачу в Runnable, бросить ее в новый однопоточный ExecutorService и затем выполнить get()
на результирующем Future с соответствующим таймаутом. Это даст вам функциональность таймаута, поскольку get()
вызовет исключение, если задание не завершится вовремя.
Короткий ответ - "это сложно", в зависимости от ваших требований. Я настоятельно рекомендую прочитать Java Concurrency In Practice.
Основное, что вы можете сделать, это (а) убедиться, что Runnable вашего SwingWorker'а дружественен к прерыванию, и (б) установить таймер (или использовать блокирующий вызов get(), упомянутый Брайаном) для отмены вашего Future.