单例模式
package com.xuan.单例模式;
public class 饿汉式 {
private 饿汉式() {
}
private final static 饿汉式 hungry=new 饿汉式();
public static 饿汉式 getInstance(){
return hungry;
}
public static void main(String[] args) {
}
}
=====================================================
package com.xuan.单例模式;
public class 懒汉式 {
private 懒汉式() {
System.out.println(Thread.currentThread().getName()+" ok");
}
private volatile static 懒汉式 lazyman;
public static 懒汉式 getInstance(){
if (lazyman==null){
synchronized (懒汉式.class){
if (lazyman==null){
lazyman=new 懒汉式();
}
}
}
return lazyman;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new Thread(()->{
懒汉式.getInstance();
}).start();
}
}
}
=====================================================
package com.xuan.单例模式;
import com.sun.org.apache.bcel.internal.classfile.InnerClass;
public class 静态内部类 {
private 静态内部类(){
}
public static 静态内部类 getInstance(){
return InnerClass.HOLDER;
}
public static class InnerClass{
private static final 静态内部类 HOLDER=new 静态内部类();
}
}
=====================================================
package com.xuan.单例模式;
import sun.security.jca.GetInstance;
public enum 枚举类 {
INSTANCE;
public 枚举类 getInstance(){
return INSTANCE;
}
}
class test{
public static void main(String[] args) {
枚举类 instance=枚举类.INSTANCE;
}
}