Entity class for testing:
public class ThreadInstance {
private String name;
private Integer numberOf;
private volatile static ThreadInstance instance;
private ThreadInstance() {
super();
}
private ThreadInstance(String name, Integer numberOf) {
super();
this.name = name;
this.numberOf = numberOf;
}
/**
* 多线程单例双重检查
*
* @param instance
* @return
*/
public static ThreadInstance getInstance(ThreadInstance instance) {
if (null == instance) {
synchronized (ThreadInstance.class) {
if (null == instance) {
return instance = new ThreadInstance();
}
}
}
return instance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getNumberOf() {
return numberOf;
}
public void setNumberOf(Integer numberOf) {
this.numberOf = numberOf;
}
public static ThreadInstance getInstance() {
return instance;
}
public static void setInstance(ThreadInstance instance) {
ThreadInstance.instance = instance;
}
@Override
public String toString() {
return "ThreadInstance [name=" + name + ", numberOf=" + numberOf + "]";
}
}
Test category:
package domain;
public class ThreadInstance {
private String name;
private Integer numberOf;
private volatile static ThreadInstance instance;
private ThreadInstance() {
super();
}
private ThreadInstance(String name, Integer numberOf) {
super();
this.name = name;
this.numberOf = numberOf;
}
/**
* 多线程单例双重检查
*
* @param instance
* @return
*/
public static ThreadInstance getInstance(ThreadInstance instance) {
if (null == instance) {
synchronized (ThreadInstance.class) {
if (null == instance) {
return instance = new ThreadInstance();
}
}
}
return instance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getNumberOf() {
return numberOf;
}
public void setNumberOf(Integer numberOf) {
this.numberOf = numberOf;
}
public static ThreadInstance getInstance() {
return instance;
}
public static void setInstance(ThreadInstance instance) {
ThreadInstance.instance = instance;
}
@Override
public String toString() {
return "ThreadInstance [name=" + name + ", numberOf=" + numberOf + "]";
}
}
Run example: