Double-checked locking,java tutorials,java tutorial

double checked locking


 

Ads

Tutorials   
Java final method Assert in Java Final method in java Autoboxing in Java assert In Java JDBC batch insert using Java bean class Java Singleton Pattern Java Collection API - Java Tutorials Stack Overflow - Java Tutorials End of Year Puzzle The link to the outer class,java tutorial,java tutorials Orientating Components Right to Left,java newsletter,java,tutorial Non-virtual Methods in Java - java tutorials Multicasting in Java - java tutorials,tutorial Creation Time Comparison of Multi Dimensional Array- Java Tutorials Making Exceptions Unchecked - java tutorial,java tutorials Making Enumerations Iterable - JDK 5 Example Which is Faster - LinkedList or ArrayList? LinkedHashMap - Java Tutorials HashMap and HashCode JDK 1.4 the NullPointerException - Java Tutorials Java HashMap - Java Tutorials Java GC java awt package tutorial Java Multi Dimensions Array - Java Tutorials Java HashSet  - Java Tutorials Java Field Initialisation - Java Tutorials Java Comments - Java Tutorials J2EE Singleton Pattern - Design Pattern Tutorials Java - JDK Tutorials garbage collection in java Final Methods - Java Tutorials Exceptional Constructors - Java Tutorials Double-checked locking,java tutorials,java tutorial Disassembling Java Classes - Java Tutorials Java Deadlocks - Java Deadlocks Tutorials, Deadlocks in Java Commenting out your code - Java Tutorials Class names don't identify a class - Java Tutorials Causing Deadlocks in Swing Code Exception in Java - Java Tutorials Catching Exceptions in GUI Code - Java Tutorials boolean comparisons - tutorial Interthread Communication in Java BASIC Java - Java Tutorials Thread Deadlocks - Java Tutorials Autoboxing unboxing in Java - Java Tutorials Assertion in Java Appending Strings - Java Tutorials Anonymous Inner Classes - Anonymous Inner Classes tutorial Assertion in java
Ads

Double-checked Locking

Lets us have a look of Singleton pattern, In Singleton pattern we used some type of synchronization in java, so that only only one thread can access that synchronized method or block. Lets have a look of singleton class.

public class SingletonClaz {

	// Constructor class
	private SingletonClaz() {
	}

	// Single class Instance
	private static SingletonClaz singletonInstance;

	// synchronized method
	public static synchronized SingletonClaz getInstance() {
		if (singletonInstance == null) {
			singletonInstance = new SingletonClaz();
		}
	 return singletonInstance;// Returning an instance
	}

}

In the above code you can see that only one thread can access the synchronized method. i.e. If one thread is executing the synchronized method the other will simply returned with the null singleton instance without getting the instance of the SingletonClaz. So the only one thread gets the instance of the synchronized method.

Therefore we can make this method more efficient as,

// Single class Instance
	private static SingletonClaz singletonInstance;

	// synchronized method
	public static SingletonClaz getInstance() {
		if (singletonInstance == null) {
			// Making Synchronized Block
			synchronized (SingletonClaz.class) {
				singletonInstance = new SingletonClaz();
			}
		}
		return singletonInstance;// Returning an instance
	}

In the above code you can see that when one thread enters into the synchronized block the other thread waits (blocked). When first exits the other enters into the synchronized block. But when the other thread enters into the synchronized block get create an instance, remember it is not checked at that time. Therefore we prefer Double-Checked locking.

In double checked locking we do something like this

public class SingletonClaz {

	// Constructor class
	private SingletonClaz() {
	}

	// Single class Instance
	private static SingletonClaz singletonInstance;

	// synchronized method
	public static SingletonClaz getInstance() {
		if (singletonInstance == null) {
			// Making Synchronized Block
			synchronized (SingletonClaz.class) {
				if (singletonInstance == null) {
					singletonInstance = new SingletonClaz();
				}
			}
		}
		return singletonInstance;// Returning an instance
	}

}

Therefore the reason behind that the second check prohibits those thread who had already got an instance of SingletonClaz.

Advertisements

Ads
Share on Google+Share on Google+

Double-checked locking,java tutorials,java tutorial

Posted on: April 18, 2011 If you enjoyed this post then why not add us on Google+? Add us to your Circles

Advertisements

Ads
 

Discuss: Double-checked locking,java tutorials,java tutorial  

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 
Comments:0

Ads

 

Ads