Потоки-демоны в Java

Потоки-демоны работают в фоновом режиме вместе с программой, но не являются неотъемлемой частью программы. Если какой-либо процесс может выполняться на фоне работы основных потоков выполнения и его деятельность заключается в обслуживании основных потоков приложения, то такой процесс может быть запущен как поток-демон. С помощью метода setDaemon(boolean value), вызванного вновь созданным потоком до его запуска, можно определить поток-демон. Метод boolean isDaemon() позволяет определить, является ли указанный поток демоном или нет.

/* пример # 6 : запуск и выполнение потока-демона: DemoDaemonThread.java */

package chapt14;

class T extends Thread {

public void run() {

try {

if (isDaemon()){

System.out.println("старт потока-демона");

sleep(10000); // заменить параметр на 1

} else {

System.out.println("старт обычного потока");

}

} catch (InterruptedException e) {

System.err.print("Error" + e);

} finally {

if (!isDaemon())

System.out.println(

"завершение обычного потока");

else

System.out.println(

"завершение потока-демона");

}

}

}

package chapt14;

public class DemoDaemonThread {

public static void main(String[] args) {

T usual = new T();

T daemon = new T();

daemon.setDaemon(true);

daemon.start();

usual.start();

System.out.println(

"последний оператор main");

}

}

В результате компиляции и запуска, возможно, будет выведено:

последний оператор main

старт потока-демона

старт обычного потока

завершение обычного потока

Поток-демон (из-за вызова метода sleep(10000)) не успел завершить выполнение своего кода до завершения основного потока приложения, связанного с методом main(). Базовое свойство потоков-демонов заключается в возможности основного потока приложения завершить выполнение потока-демона (в отличие от обычных потоков) с окончанием кода метода main(), не обращая внимания на то, что поток-демон еще работает. Если уменьшать время задержки потока-демона, то он может успеть завершить свое выполнение до окончания работы основного потока.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

1 комментарий »

 
  • Илья says:

    Было бы круто, если синтаксис подсвечивался более подробнее и код не растягивался. 🙂 Добра!

 

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100