четверг, 7 апреля 2011 г.

Java - поток демона (автоматическое завершение дочерних потоков)

Добрый день.
При программировании многопоточных приложений в Java очень часто стоит задача остановить потоки, которые являются дочерними.
Можно пойти 2-мя путями:

1) В ручном режиме "гасить" дочерние потоки.
2) Сделать это автоматически.

Про первый случай мы говорить не будем.
Поговорим про второй.
Для того, что-бы дочерние потоки завершались сами при завершении родительского потока,
необходимо дочерние потоки объявить как потоки демона.

Для примера:
Простой поток мы порождаем:

SimpleThread = new Thread(this,"Simple Thread");
SimpleThread.start();

Поток демона мы описывает так:

SimpleThread = new Thread(this,"Simple Thread");
SimpleThread.setDaemon(true);
SimpleThread.start();

Для проверки того, является ли поток потоком демона применяется метод isDaemon().
Возвращаемое значение - boolean.

Также необходимо пару слов сказать о области применения такого рода потоков. Чаще всего применять этот тип в том случае, когда отдельный поток должен делать некую работу, но только тогда, когда работает основное приложение.
Самый ходовой пример - менеджер заметок.

Комментариев нет:

Отправить комментарий