输出结果:
public class Singleton {
private Singleton() {}
public Singleton getInsatnce() {
return new Singleton();
}
}
public class Singleton {
private Singleton() {}
public static Singleton getInsatnce() {
return new Singleton();
}
}
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {}
public static Singleton getInsatnce() {
return singleton;
}
}
public class Singleton {
private static Singleton singleton;
private Singleton() {}
public static Singleton getInsatnce() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static Singleton getInsatnce() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
public class TestClient {
public static void main(String[] args) {
Thread thread1 = new Thread(new Runnable() {@Override public void run() {
Singleton.getInsatnce();
}
});
Thread thread2 = new Thread(new Runnable() {@Override public void run() {
Singleton.getInsatnce();
}
});
thread1.start();
thread2.start();
}
}
-------------------------------------------
实例化对象
-------------------------------------------
输出结果:
-------------------------------------------
实例化对象
实例化对象
-------------------------------------------public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static Singleton getInsatnce() {
if (singleton == null) { //-----------------------------------1
singleton = new Singleton(); //--------------------------- 2
}
return singleton;
}
}
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static synchronized Singleton getInsatnce() {
if (singleton == null) { //-----------------------------------1
singleton = new Singleton(); //--------------------------- 2
}
return singleton;
}
}
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static Singleton getInsatnce() {
if (singleton == null) {
synchronized(Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static Singleton getInsatnce() {
if (singleton == null) { //-----------------------------1
synchronized(Singleton.class) { //-----------2
singleton = new Singleton(); //----------3
}
}
return singleton;
}
}
public class Singleton {
private static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static Singleton getInsatnce() {
if (singleton == null) { //-----------------------------1
synchronized(Singleton.class) { //------------2
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
singleton = new Singleton();
private volatile static Singleton singleton;
public class Singleton {
private volatile static Singleton singleton;
private Singleton() {
System.out.print("实例化对象\n");
}
public static Singleton getInsatnce() {
if (singleton == null) { //-----------------------------1
synchronized(Singleton.class) { //------------2
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
public class Singleton {
private static class SingletonHolder {
private static final Singleton singleton = new Singleton();
}
private Singleton() {}
public static final Singleton getInstance() {
return SingletonHolder.singleton;
}
}
public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Person person1 = new Person();
person1.setName("张三");
System.out.print(person1.getName());
public enum Person {
person1;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
person1;
Person.person1.setName("张三");
System.out.print(Person.person1.getName());
person1,
person2;
public enum Person {
person1;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public enum Person {
person1("张三");
private String name;
Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
来源: http://www.jianshu.com/p/b99e870f4ce0