Чтобы усилить то, что сказал @Jon Skeet, это ДЕЙСТВИТЕЛЬНО ПЛОХАЯ ИДЕЯ, чтобы назвать устаревшие методы Thread.stop()
или Thread.destroy()
.
Согласно javadoc, Thread.destroy()
был принципиально опасным и никогда не был реализован. Первоначальная идея состояла в том, чтобы просто убить поток и сломать все его блокировки монитора. Если бы это было в середине обновления общей структуры данных, структура данных осталась бы в неопределенном состоянии. Другие потоки, ожидающие, что убитый поток уведомит какой-то объект, будут ждать навсегда.
Thread.stop()
вызывает исключение ThreadDeath при неожиданном (к пораженному коду) месте. Это немного более упорядоченно, чем убийство потока, но если все остановленные потоки (включая все, что он вызывает), тщательно написаны с блоками finally
, чтобы уведомить официантов, восстановить структуры данных и т. Д., У вас есть та же проблема.
Обратитесь к Java Thread Primitive Deprecation за всю историю.
Да, очень опасно. Я часто шутил, что единственный безопасный способ убить поток - это System.exit(). – PSpeed