stop()
, suspend()
и resume()
в java.lang.Thread
устарели, потому что они небезопасны. Солнце рекомендовало использовать Thread.interrupt()
, но этот подход не работает во всех случаях. Например, если вы вызываете метод библиотеки, который явно или неявно не проверяет флаг interrupted
, у вас нет выбора, кроме как дождаться завершения вызова.
Итак, мне интересно, можно ли охарактеризовать ситуации, когда (доказуемо) безопасно называть stop()
в потоке. Например, было бы безопасно stop()
поток, который ничего не делал, кроме вызова find(...)
или match(...)
на java.util.regex.Matcher
?
(Если есть какие-либо инженеры Sun, которые читают это... окончательный ответ будет действительно оценен.)
РЕДАКТИРОВАТЬ: ответы, которые просто повторяют мантру, которую вы не должны называть stop()
, потому что она устарела, небезопасна, независимо от того, отсутствует точка этого вопроса. Я знаю, что в большинстве случаев это действительно небезопасно, и что если есть жизнеспособная альтернатива, вы должны всегда использовать это вместо этого.
Этот вопрос касается случаев подмножества, где он безопасен. В частности, что это за подмножество?