...
Code Block | ||
---|---|---|
| ||
class NetworkHandler implements Runnable {
private static ThreadGroup tg = new ThreadGroup("Chief");
public void run() {
try {
method1();
method2();
Thread.sleep(500);
} catch(InterruptedException e) {}
}
public static void method1() throws InterruptedException {
Thread t1 = new Thread(tg, new HandleRequest(), "t1");
Thread t2 = new Thread(tg, new HandleRequest(), "t2");
t1.start();
t2.start();
}
public static void method2() {
Thread t3 = new Thread(tg, new HandleRequest(), "t3");
Thread t4 = new Thread(tg, new HandleRequest(), "t4");
t3.start();
t4.start();
}
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(tg, new NetworkHandler(), "t");
t.start();
System.out.println("Active Threads in Thread Group at point (1):" + t.getThreadGroup().getName() + " " + Thread.activeCount());
Thread ta[] = new Thread[Thread.activeCount()];
for(int i=0;i<500000;i++) {} // delay to demonstrate TOCTOU condition
System.out.println("Active Threads in Thread Group at point (2):" + t.getThreadGroup().getName() + " " + Thread.activeCount());
int n = Thread.enumerate(ta);
System.out.println("Enumerating...");
for(int i=0;i< n;i++) {
System.out.println("Thread " + i + " = " + ta[i].getName());
}
}
}
class HandleRequest implements Runnable {
public void run() {
System.out.println("Active Threads in Thread Group (Handler thread invoked this): " +
Thread.currentThread().getThreadGroup().getName() + " " + Thread.activeCount());
}
}
|
...