public T get() throws E {
		// use a temporary variable to reduce the number of reads of the volatile field
		// see commons-lang3
		T result = object;
		if (object == null) {
			synchronized (this) {
				result = object;
				if (object == null) {
					object = result = initializer.get();
				}
			}
		}
		return result;
	}
public T get ( ) throws E { T result = object ; if ( object == null ) { synchronized ( this ) { result = object ; if ( object == null ) { object = result = initializer . get ( ) ; } } } return result ; }
Create or get the instance.

@return the instance
@throws E exception thrown by initializer