Skip to content

Instantly share code, notes, and snippets.

@minisu
Last active August 29, 2015 13:59
Show Gist options
  • Select an option

  • Save minisu/10729342 to your computer and use it in GitHub Desktop.

Select an option

Save minisu/10729342 to your computer and use it in GitHub Desktop.
class Foo {
private Helper helper = null;
public Helper getHelper() {
if (helper == null)
helper = new Helper();
return helper;
}
}
////////////////////////////////////////////////
class Foo {
private Helper helper = null;
public Helper synchronized getHelper() {
if (helper == null)
helper = new Helper();
return helper;
}
}
////////////////////////////////////////////////
class Foo {
private Helper helper = null;
public Helper getHelper() {
if (helper == null) {
synchronized (this) {
if (helper == null) {
helper = new Helper();
}
}
}
return helper;
}
}
////////////////////////////////////////////////
class Foo {
private volatile Helper helper = null;
public Helper getHelper() {
if (helper == null) {
synchronized (this) {
if (helper == null) {
helper = new Helper();
}
}
}
return helper;
}
}
/////////////////// Using Guava //////////////////////
Supplier.memoize( () -> new Helper() );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment