网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

JAVA面试经典合集2:怎样写出一个线程安全的单例模式

怎样写出一个线程安全的单例模式

创新互联公司服务项目包括溪湖网站建设、溪湖网站制作、溪湖网页制作以及溪湖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,溪湖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到溪湖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

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
        // 可以看到结果一样
        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() {
        // 调用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() {
        // 调用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() {
        // 调用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() {

    }

    // 饿汉式直接静态初始化,保证唯一,但是初始类时就加载内存,性能稍低
    private static SingleTon instance = new SingleTon();

    // 创建直接返回线程方法
    public static SingleTon getInstance() {
        return instance;
    }

}

//懒汉式静态内部类初始化方法
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;

    }

}

总结:最优方法为内部静态类的方法,即方法2


网站标题:JAVA面试经典合集2:怎样写出一个线程安全的单例模式
网页地址:http://bjjierui.cn/article/ijdjpc.html

其他资讯