package singleton;
public class EHanShi {
public static void main(String[] args) {
Singleton instance = Singleton.getInstance();
Singleton instance2 = Singleton.getInstance();
System.out.println(instance.hashCode());
System.out.println(instance2.hashCode());
}
}
class Singleton{
private Singleton() {
}
private final static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
class Singleton1{
public Singleton1() {
}
private static Singleton1 instance;
{
instance = new Singleton1();
}
public static Singleton1 getInstance(){
return instance;
}
}
package singleton;
public class LanHanShi {
public static void main(String[] args) {
System.out.println(SingletonOfLazy.getInstance().hashCode());
System.out.println(SingletonOfLazy.getInstance().hashCode());
}
}
class SingletonOfLazy2{
private static volatile SingletonOfLazy2 instance;
private SingletonOfLazy2(){}
public static SingletonOfLazy2 getInstance(){
if (instance == null){
synchronized (SingletonOfLazy2.class){
if (instance == null){
instance = new SingletonOfLazy2();
}
}
}
return instance;
}
}
class SingletonOfLazy{
private static SingletonOfLazy instance;
private SingletonOfLazy(){}
public static SingletonOfLazy getInstance(){
if (instance == null){
instance = new SingletonOfLazy();
}
return instance;
}
}
class SingletonOfLazy1{
private static SingletonOfLazy1 instance;
private SingletonOfLazy1(){}
public static synchronized SingletonOfLazy1 getInstance(){
if (instance == null){
instance = new SingletonOfLazy1();
}
return instance;
}
}
package singleton;
public class StaticInternalClass {
private static volatile StaticInternalClass instance;
private StaticInternalClass(){}
private static class SingletonInstance{
private static final StaticInternalClass INSTANCE = new StaticInternalClass();
}
public static synchronized StaticInternalClass getInstance(){
return SingletonInstance.INSTANCE;
}
}
package singleton;
public enum Enum {
INSTANCE;
public void sayOK(){
System.out.println("ok");
}
}