
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.88] |
![]() |
|
Сообщ.
#1
,
|
|
|
Начал читать о потоках-демонах в Thinking in Java, там приведён пример:
//: c14:Daemons.java // Daemonic behavior. import java.io.*; class Daemon extends Thread { private static final int SIZE = 10; private Thread[] t = new Thread[SIZE]; public Daemon() { setDaemon(true); start(); } public void run() { for(int i = 0; i < SIZE; i++) t[i] = new DaemonSpawn(i); for(int i = 0; i < SIZE; i++) System.out.println( "t[" + i + "].isDaemon() = " + t[i].isDaemon()); while(true) yield(); } } class DaemonSpawn extends Thread { public DaemonSpawn(int i) { System.out.println( "DaemonSpawn " + i + " started"); start(); } public void run() { while(true) yield(); } } public class Daemons { public static void main(String[] args) throws IOException { Thread d = new Daemon(); System.out.println( "d.isDaemon() = " + d.isDaemon()); // Allow the daemon threads to // finish their startup processes: System.out.println("Press any key"); System.in.read(); } } ///:~ Так вот, как я понял прога запускается с класс Daemons, там создаётся поток, но он ведь не запускается(поток стартом)! Ещё, поток-демон создаётся сначала обычным потоком, а потом сетдаемон и всё? Тогда в данном примере setDaemon(true) делает какой поток демоном? И что он запускает в конструкторе Daemon' а методом start ()? ??? ??? ??? |
Сообщ.
#2
,
|
|
|
Цитата PaG, 29.04.02, 14:30:18 Так вот, как я понял прога запускается с класс Daemons, там создаётся поток, но он ведь не запускается(поток стартом)! А в конструкторе демона старт для красоты по твоему? ![]() Цитата PaG, 29.04.02, 14:30:18 Ещё, поток-демон создаётся сначала обычным потоком, а потом сетдаемон и всё? Тогда в данном примере setDaemon(true) делает какой поток демоном? Текущий экземпляр класса Тхреад. Что он еще может демонизировать? Цитата PaG, 29.04.02, 14:30:18 И что он запускает в конструкторе Daemon' а методом start ()? ??? ??? ??? Текущий экземпляр класса Тхреад сделанный демоном функцией сетДемон(тру); Вообще-то параллельные потоки в Яве - это просто... ![]() |
Сообщ.
#3
,
|
|
|
поток демона в Java - обычно используется как поставщик услуг для обычных потоков. Обычно имеют бесконечный цикл, который ждет запроса на обслуживание или выполняет задачи потока. Они не могут выполнять важные задания. (Потому что мы не знаем, когда у них будет время процессора, и они могут закончить любое время, если нет других потоков.)
Типичным примером такого рода потоков является сборщик мусора Java. |