小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JAVA面試經(jīng)典合集2:怎樣寫出一個線程安全的單例模式

 印度阿三17 2019-08-04

怎樣寫出一個線程安全的單例模式

package com.chendan.mianshi;

/**
 * 
 * 
 * @Description
 * @author ChenDan 624665255@qq.com
 * @date 2019年8月4日下午8:47:13
 *
 */

public class MianShiTest2 {
    public static void main(String[] args) {
        // com.chendan.mianshi.SingleTon@1c53fd30
        // com.chendan.mianshi.SingleTon@1c53fd30
        // 可以看到結(jié)果一樣
        getInstanceEhs();

        // com.chendan.mianshi.SingleTon2@282ba1e
        // com.chendan.mianshi.SingleTon2@282ba1e
        getInstanceLhs();

        //com.chendan.mianshi.SingleTon3@f5f2bb7
        //com.chendan.mianshi.SingleTon3@f5f2bb7
        getInstanceLhs2();

    }

    // 餓漢式方法
    public static void getInstanceEhs() {
        // 調(diào)用GetInstance直接返回一個instance對象,且是唯一的
        SingleTon instance1 = SingleTon.getInstance();
        SingleTon instance2 = SingleTon.getInstance();
        // com.chendan.mianshi.SingleTon@1c53fd30
        System.out.println(instance1);
        // com.chendan.mianshi.SingleTon@1c53fd30
        System.out.println(instance2);
    }

    // 懶漢式方法

    public static void getInstanceLhs() {
        // 調(diào)用getInstance直接返回一個instance對象,且是唯一的
        SingleTon2 instance1 = SingleTon2.getInstance();
        SingleTon2 instance2 = SingleTon2.getInstance();
        // ccom.chendan.mianshi.SingleTon2@cad498c
        System.out.println(instance1);
        // com.chendan.mianshi.SingleTon2@cad498c
        System.out.println(instance2);
    }

    public static void getInstanceLhs2() {
        // 調(diào)用getInstance直接返回一個instance對象,且是唯一的
        SingleTon3 instance1 = SingleTon3.getInstance();
        SingleTon3 instance2 = SingleTon3.getInstance();
        // com.chendan.mianshi.SingleTon2@cad498c
        System.out.println(instance1);
        // com.chendan.mianshi.SingleTon2@cad498c
        System.out.println(instance2);
    }

}

//餓漢式直接初始化方法
class SingleTon {

    private SingleTon() {

    }

    // 餓漢式直接靜態(tài)初始化,保證唯一,但是初始類時就加載內(nèi)存,性能稍低
    private static SingleTon instance = new SingleTon();

    // 創(chuàng)建直接返回線程方法
    public static SingleTon getInstance() {
        return instance;
    }

}

//懶漢式靜態(tài)內(nèi)部類初始化方法
class SingleTon2 {

    private SingleTon2() {
    }

    private static class Singleton2Holder {
        public final static SingleTon2 instance = new SingleTon2();
    }

    public static SingleTon2 getInstance() {
        return Singleton2Holder.instance;
    }

}

class SingleTon3 {

    private SingleTon3() {
    }

    public static SingleTon3 instance = null;

    public static SingleTon3 getInstance() {

        if (instance == null) {
            synchronized (SingleTon3.class) {
                if (instance == null) {
                    instance = new SingleTon3();
                }
            }
        }

        return instance;

    }

}

總結(jié):最優(yōu)方法為內(nèi)部靜態(tài)類的方法,即方法2

來源:https://www./content-1-377251.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多