2015-05-31 11:55:18 +03:00
|
|
|
package com.iluwatar.lazyloading;
|
2015-04-10 20:24:16 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* Same as HolderNaive but with added synchronization.
|
|
|
|
* This implementation is thread safe, but each {@link #getHeavy()}
|
|
|
|
* call costs additional synchronization overhead.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public class HolderThreadSafe {
|
|
|
|
|
|
|
|
private Heavy heavy;
|
|
|
|
|
|
|
|
public HolderThreadSafe() {
|
|
|
|
System.out.println("HolderThreadSafe created");
|
|
|
|
}
|
|
|
|
|
|
|
|
public synchronized Heavy getHeavy() {
|
|
|
|
if (heavy == null) {
|
|
|
|
heavy = new Heavy();
|
|
|
|
}
|
|
|
|
return heavy;
|
|
|
|
}
|
|
|
|
}
|