The main reason behind the static import feature in java5 is to reduce the unnecessary reference of class name to call static methods/fields. package import.static.test ; import static java.lang.Integer.MAX_VALUE ; import static java.lang.Integer.MIN_VALUE ; import static java.lang.System.out ; public class StaticImportExample { public static void main ( String args []) { //without Static import System . out . println ( "Maximum value of int variable in Java without " + "static import : " + Integer . MAX_VALUE ) ; System . out . println ( "Minimum value of int variable in Java without " + static import : " + Integer . MIN_VALUE ) ; //after static import in Java 5 out . println ( "Maximum value of int variable using " + static import : " + MAX_VALUE ) ; out . println ( "Minimum value of int variab
Reason behind wait method present in Object class: In the Java language, you wait() on a particular instance of an Object – a monitor assigned to that object to be precise. If you want to send a signal to one thread that is waiting on that specific object instance then you call notify() on that object. If you want to send a signal to all threads that are waiting on that object instance, you use notifyAll() on that object. If wait() and notify() were on the Thread instead then each thread would have to know the status of every other thread. How would thread1 know that thread2 was waiting for access to a particular resource? If thread1 needed to call thread2.notify() it would have to somehow find out that thread2 was waiting. There would need to be some mechanism for threads to register the resources or actions that they need so others could signal them when stuff was ready or available. In Java, the object itself is the entity that is shared between thre