Thursday 8 January 2015

Textual Representation of logo

Java MultiThreading Interview Question

What would be the output of the following program ?

public class ThreadTest implements Runnable
 private Object obj=new Object();

 public static void main(String[] args)
  ThreadTest test = new ThreadTest();
  Thread t1 = new Thread(test);
  Thread t2 = new Thread(test);

 public void run()
   System.out.println("1 " + Thread.currentThread().getId());
   obj = new Object();
   System.out.println("2 " +Thread.currentThread().getId());

Answer : The lock will break. The reason is that each and every object has got its own Object Monitor. Modifying the object means we will have a new lock object with new monitor. In such a case, lock will break and cause all the threads in the entry set to acquire the monitor.