На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Потоки-демоны
    Начал читать о потоках-демонах в 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 ()? ??? ??? ???
      Цитата 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 ()? ??? ??? ???


      Текущий экземпляр класса Тхреад сделанный демоном функцией сетДемон(тру);

      Вообще-то параллельные потоки в Яве - это просто... :)
      Сообщение отредактировано: tatar_0x4E -
        поток демона в Java - обычно используется как поставщик услуг для обычных потоков. Обычно имеют бесконечный цикл, который ждет запроса на обслуживание или выполняет задачи потока. Они не могут выполнять важные задания. (Потому что мы не знаем, когда у них будет время процессора, и они могут закончить любое время, если нет других потоков.)

        Типичным примером такого рода потоков является сборщик мусора Java.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0181 ]   [ 15 queries used ]   [ Generated: 28.03.24, 10:49 GMT ]