super("Daemon demo thread");
setDaemon(true);
start();
}
public void run() {
Thread threads[] =
new Thread[10];
public class ThreadTest implements Runnable {
// Отдельная
// находится
public final
группа, в которой будут
все потоки ThreadTest
static ThreadGroup GROUP =
new ThreadGroup("Daemon demo");
// Стартовое значение
private int start;
public ThreadTest(int
start = (s % 2 ==
new Thread(GROUP,
}
public void run() {
try {
s) {
0) ? s : s+1;
this, "Thread
try
{
while (true) {
// Получаем
// тестовой
int count =
"+start).start();
набор всех потоков из
группы
ThreadTest.GROUP.activeCount();
if (threads.length < count)
threads = new Thread[count+10];
// Начинаем обратный отсчет
for (int i=start; i>0; i--) {
Thread.sleep(300);
count = ThreadTest.GROUP.enumerate(threads);
//
//
if
По достижению середины
порождаем новый
поток с половинным начальным
(start > 2 && i == start/2)
new ThreadTest(i);
значением
// Распечатываем имя каждого потока
for (int i=0; iSystem.out.print(threads[i].getName() + ",
System.out.println();
");
}
}
catch (InterruptedException e) {}
Thread.sleep(300);
}
public static void main(String s[]) {
new ThreadTest(16);
new DaemonDemo();
}
}
}
catch (InterruptedException e) {}
}
}
}
© 2010 NetCracker Technology Corp. Confidential.
10/29/2010
11