Программирование на Java




Example.12.1


public class ThreadTest implements Runnable {

// Отдельная группа, в которой будут // находиться все потоки ThreadTest public final static ThreadGroup GROUP = new ThreadGroup("Daemon demo");

// Стартовое значение, указывается при создании объекта private int start;

public ThreadTest(int s) { start = (s%2==0)? s: s+1; new Thread(GROUP, this, "Thread "+ start).start(); }

public void run() { // Начинаем обратный отсчет for (int i=start; i>0; i--) { try { Thread.sleep(300); } catch (InterruptedException e) {} // По достижении середины порождаем // новый поток с половинным начальным // значением if (start>2 && i==start/2) { new ThreadTest(i); } } }

public static void main(String s[]) { new ThreadTest(16); new DaemonDemo(); } } public class DaemonDemo extends Thread { public DaemonDemo() { super("Daemon demo thread"); setDaemon(true); start(); }

public void run() { Thread threads[]=new Thread[10]; while (true) { // Получаем набор всех потоков из // тестовой группы int count=ThreadTest.GROUP.activeCount(); if (threads.length<count) threads = new Thread[count+10]; count=ThreadTest.GROUP.enumerate(threads);

// Распечатываем имя каждого потока for (int i=0; i<count; i++) { System.out.print(threads[i].getName()+", "); } System.out.println(); try { Thread.sleep(300); } catch (InterruptedException e) {} } } }

Пример 12.1.

Закрыть окно




Содержание  Назад  Вперед