Java Examples - Id of a Thread


Advertisements


Problem Description

How to get the Id of the running thread?

Solution

Following example demonstrates how to get the Id of a running thread using getThreadId() method.

public class Main extends Object implements Runnable {
   private ThreadID var;
   public Main(ThreadID v) {
      this.var = v;
   } 
   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();
      Main shared = new Main(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;
   } 
   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);
   }
}

Result

The above code sample will produce the following result.

threadA: in initialValue()
threadA: var getThreadID =10001
threadB: in initialValue()
threadB: var getThreadID =10002
threadC: in initialValue()
threadC: var getThreadID =10003
threadA: var getThreadID =10001
threadB: var getThreadID =10002
threadC: var getThreadID =10003

java_threading.htm

Advertisements