Я хочу запустить поток в течение некоторого фиксированного количества времени. Если он не завершен в течение этого времени, я хочу либо убить его, либо выбросить какое-то исключение, либо обработать его каким-то образом. Как это можно сделать?
Один из способов сделать это, как я понял из этот поток заключается в использовании TimerTask внутри метода run() Thread.
Есть ли лучшие решения для этого?
EDIT: добавление щедрости, поскольку мне нужен более четкий ответ. Код ExecutorService, приведенный ниже, не затрагивает мою проблему. Почему я должен спать() после выполнения (какой-то код - я не могу обработать этот кусок кода)? Если код завершен и функция sleep() прерывается, как это может быть timeOut?
Задача, которую нужно выполнить, не входит в мой контроль. Это может быть любой фрагмент кода. Проблема в том, что эта часть кода может работать в бесконечном цикле. Я не хочу, чтобы это произошло. Поэтому я просто хочу запустить эту задачу в отдельном потоке. Родительский поток должен дождаться завершения этого потока и должен знать статус задачи (т.е. Время ожидания или какое-то исключение или если это успех). Если задача переходит в бесконечный цикл, мой родительский поток продолжает ждать бесконечно, что не является идеальной ситуацией.