Экспозиция:Как думать о потоках Java? aka Thread.stop
Я думаю, что виртуальная машина Java является удивительной. Это гарантия безопасности байт-кода, стандартных библиотек, ... удивительны, особенно способность загружать Java-класс «на лету» и знают, что он не может разрушить виртуальную машину (удачи с * .so файлами или модули ядра).
Одна вещь, которую я не понимаю, как Java относится к Thread.stop
Я прочитал http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html , но это кажется странным по следующим причинам:
1) Управление ресурсами
В ОС Unix, если процесс подтачивает ресурсы, я могу убить -9.
2) Преломление Абстракт:
Если я начинаю вычислительно дорогую работу, и я больше не нужны вычисления, я могу убить -9 его. В этой модели потоковой передачи Java мой поток вычислений должен периодически проверять некоторый логический флаг, чтобы увидеть, нужно ли это выйти [это похоже на разрыв слоев абстракции - когда я пишу вычислительный код, я должен сосредоточиться на вычислительном коде, а не где следует распространять чеки на то, должен ли он прекращаться.
3) Безопасность Блокировка/Мониторы
Так официальная причина в том, «что нить держит блокировки/монитор, и он получает Thread.stopped объекты будут оставлены в поврежденных состояниях?» - еще , в ОС это не проблема, у нас есть обработчики прерываний. Почему в потоках Java не работают обработчики прерываний, которые работают как обработчики прерываний ОС?
Вопрос:
Очевидно, что я имею в виду Java Темы с неправильной ментальной модели. Как я должен думать о потоках Java?
Спасибо!
Я сбиваю с толку два.У вас есть интуиция о том, почему JVM не предоставляет Processes и предоставляет только Threads? – anon
@anon: поскольку сам JVM является процессом (при запуске), а не операционной системой. Процесс не может обеспечить дополнительные процессы. Фактически, JVM действительно не предоставляет потоки - он абстрагирует потоки (если JVM не имитирует потоки), но это базовая ОС, которая предоставляет потоки процессу. –