framework/server/core/src/main/java/org/ldp4j/server/data/spi/RuntimeDelegate.java
public static RuntimeDelegate getInstance() {
		RuntimeDelegate result = RuntimeDelegate.CACHED_DELEGATE.get();
		if (result != null) {
			return result;
		}
		synchronized(RuntimeDelegate.CACHED_DELEGATE) {
			result=RuntimeDelegate.CACHED_DELEGATE.get();
			if(result==null) {
				RuntimeDelegate.CACHED_DELEGATE.set(findDelegate());
				result=RuntimeDelegate.CACHED_DELEGATE.get();
			}
			return result;
		}
	}
public static RuntimeDelegate getInstance() {
		RuntimeDelegate result = RuntimeDelegate.CACHED_DELEGATE.get();
		if (result != null) {
			return result;
		}
		synchronized(RuntimeDelegate.CACHED_DELEGATE) {
			result=RuntimeDelegate.CACHED_DELEGATE.get();
			if(result==null) {
				RuntimeDelegate.CACHED_DELEGATE.set(findDelegate());
				result=RuntimeDelegate.CACHED_DELEGATE.get();
			}
			return result;
		}
	}
public static RuntimeDelegate getInstance ( ) { RuntimeDelegate result = RuntimeDelegate . CACHED_DELEGATE . get ( ) ; if ( result != null ) { return result ; } synchronized ( RuntimeDelegate . CACHED_DELEGATE ) { result = RuntimeDelegate . CACHED_DELEGATE . get ( ) ; if ( result == null ) { RuntimeDelegate . CACHED_DELEGATE . set ( findDelegate ( ) ) ; result = RuntimeDelegate . CACHED_DELEGATE . get ( ) ; } return result ; } }
Obtain a {@code RuntimeDelegate} instance. If an instance had not already
been created and set via {@link #setInstance(RuntimeDelegate)}, the first
invocation will create an instance which will then be cached for future
use.

<p>
The algorithm used to locate the RuntimeDelegate subclass to use consists
of the following steps:
</p>
<ul>
<li>
If a resource with the name of
{@code META-INF/services/org.ldp4j.server.data.spi.RuntimeDelegate} exists, then
its first line, if present, is used as the UTF-8 encoded name of the
implementation class.</li>
<li>
If the $java.home/lib/ldp4j-server-data.properties file exists and it is readable by
the {@code java.util.Properties.load(InputStream)} method and it contains
an entry whose key is {@code org.ldp4j.server.data.spi.RuntimeDelegate}, then the
value of that entry is used as the name of the implementation class.</li>
<li>
If a system property with the name
{@code org.ldp4j.server.data.spi.RuntimeDelegate} is defined, then its value is
used as the name of the implementation class.</li>
<li>
Finally, a default implementation class name is used.</li>
</ul>

@return an instance of {@code RuntimeDelegate}.
Obtain a { @code RuntimeDelegate } instance . If an instance had not already been created and set via { @link #setInstance ( RuntimeDelegate ) } the first invocation will create an instance which will then be cached for future use .