Качели и Темы - PullRequest
       15

Качели и Темы

0 голосов
/ 21 марта 2012

У меня есть интерфейс Swing, когда я нажимаю на кнопку, поток создается на бесконечности (род while (true) ...).

Мой вопрос: когда я закрываю основной процессбудут ли созданные темы закрыты автоматически?

Ответы [ 2 ]

5 голосов
/ 21 марта 2012

Зависит от того, являются ли запущенные вами потоки потоками демонов или нет, и от того, как вы закрываете основной процесс.

Вот соответствующая документация из стандартной библиотеки:

Когда запускается виртуальная машина Java, обычно существует один поток, не являющийся демоном (который обычно вызывает метод с именем main некоторого назначенного класса).Виртуальная машина Java продолжает выполнять потоки до тех пор, пока не произойдет одно из следующих действий: :

  • Был вызван метод выхода класса Runtime, и диспетчер безопасности разрешил выходвыполняемая операция.

  • Все потоки, не являющиеся потоками демона, умерли, либо путем возврата из вызова метода run, либо путем выброса исключения, которое выходит за пределы метода run.

Итак, если вы выключите основной процесс с помощью System.exit или с помощью jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE), то все потоки умрут, когда вы закроете.

Если вы просто позволите основному потоку (потоку, работающему public static void main) выпасть из края основного метода, тогда потоки продолжат работать.

1 голос
/ 21 марта 2012

Да, если он не настроен как поток демона. Вы можете просмотреть инструментальные JVM с помощью инструмента jps:

jps -l
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...