import java.util.concurrent.locks.*; import java.util.*; public class TThreadE { public static void main(String[] args) { TThreadE app = new TThreadE(); } private TThreadE() { Random r = new Random(); for (int i=0; i<10; i++) { int time = r.nextInt(20) * 1000; if (i == 9) time = 5000; DThread t = new DThread(i, time); if (i < 9) t.setDaemon(true); System.out.println("Thread " + t.getNum() + " (" + t.getTime()/1000 + ") " + (t.isDaemon()?"daemon":"")); t.start(); } System.out.println("Done spawning threads"); } class DThread extends Thread { private int time; private int num; public DThread(int num, int millisecs) { this.num = num; time = millisecs; } public int getTime() { return time; } public int getNum() { return num; } public void run() { System.out.println("Starting thread " + num); try { Thread.sleep(time); } catch (InterruptedException e) { // do nothing } System.out.println("Ending thread " + num); } } } /* Thread 0 (2) daemon Thread 1 (16) daemon Starting thread 0 Thread 2 (17) daemon Starting thread 1 Thread 3 (7) daemon Starting thread 2 Thread 4 (15) daemon Starting thread 3 Thread 5 (5) daemon Starting thread 4 Thread 6 (16) daemon Starting thread 5 Thread 7 (6) daemon Starting thread 6 Thread 8 (14) daemon Starting thread 7 Thread 9 (5) Starting thread 8 Done spawning threads Starting thread 9 Ending thread 0 Ending thread 9 Ending thread 5 */