Mega Code Archive

 
Categories / Java / Threads
 

Thread ID

public class ThreadIDMain extends Object implements Runnable {   private ThreadID var;   public ThreadIDMain(ThreadID var) {     this.var = var;   }   public void run() {     try {       print("var.getThreadID()=" + var.getThreadID());       Thread.sleep(2000);       print("var.getThreadID()=" + var.getThreadID());     } catch (InterruptedException x) {     }   }   private static void print(String msg) {     String name = Thread.currentThread().getName();     System.out.println(name + ": " + msg);   }   public static void main(String[] args) {     ThreadID tid = new ThreadID();     ThreadIDMain shared = new ThreadIDMain(tid);     try {       Thread threadA = new Thread(shared, "threadA");       threadA.start();       Thread.sleep(500);       Thread threadB = new Thread(shared, "threadB");       threadB.start();       Thread.sleep(500);       Thread threadC = new Thread(shared, "threadC");       threadC.start();     } catch (InterruptedException x) {     }   } } class ThreadID extends ThreadLocal {   private int nextID;   public ThreadID() {     nextID = 10001;   }   private synchronized Integer getNewID() {     Integer id = new Integer(nextID);     nextID++;     return id;   }   // override ThreadLocal's version   protected Object initialValue() {     print("in initialValue()");     return getNewID();   }   public int getThreadID() {     Integer id = (Integer) get();     return id.intValue();   }   private static void print(String msg) {     String name = Thread.currentThread().getName();     System.out.println(name + ": " + msg);   } }