单例模式--并发

饿汉式

public class SingleEhan {
    private static SingleEhan eHan = new SingleEhan();
    private SingleEhan() {
        System.out.println("1一个饿汉式对象被实例化");
    }
    public static SingleEhan getInstance() {
        return eHan;
    }
}

懒汉式

public class SingleLanhan {
    private static SingleLanhan lanhan;
    private SingleLanhan() {
        System.out.println("1一个懒汉式对象被实例化");
    }
    public static SingleLanhan getInstance() {
        synchronized ("") {
            if (lanhan==null) {
                lanhan = new SingleLanhan();
            }
        }
        return lanhan;
    }
//    public static synchronized SingleLanhan getInstance() {
//        if (lanhan==null) {
//            lanhan = new SingleLanhan();
//        }
//        return lanhan;
//    }
}

测试类

public class Test {
    public static void main(String[] args) {
//        懒汉式并发测试
//        Runnable run1 = () ->{
//            SingleLanhan.getInstance();
//        };
//        for (int i = 0; i < 1000; i++) {
//            new Thread(run1).start();
//        }
        
//        饿汉式并发测试
        Runnable run2 = () ->{
            SingleEhan.getInstance();
        };
        for (int i = 0; i < 1000; i++) {
            new Thread(run2).start();
        }
    }
}

 

posted on 2019-11-25 18:51  TOUCH_EKKO  阅读(177)  评论(0)    收藏  举报