Monday, April 12, 2010

Thursday, April 1, 2010

Synchronized block vs Synchronized method

Both the synchronized method and block are used to acquires the lock for an object. But the context may vary. Suppose if we want to invoke a critical method which is in a class whose access is not available then synchronized block is used. Otherwise synchronized method can be used.

Synchronized block is used when we use code which we cannot modify ourselves like third party jars
//Synchronized block
class A {
public void method1() {...}
}

class B{
public static void main(String s[]){
A objecta=new A();
A objectb=new A();

synchronized(objecta) {
objecta.method1();
}
objectb.method1();
//not synchronized
}


Synchronized methods are used when we are sure all instance will work on the same set of data through the same function
//synchronized method
class A{
public synchronized void method1() { ...}
}
class B{
public static void main(String s[]){
A objecta=new A();
A objectb =new A();

objecta.method1();
objectb.method2();
}