JAVA单例模式

来源:互联网 发布:淘宝能部分退款吗 编辑:程序博客网 时间:2024/05/16 10:26

一:单例模式
单例模式主要有四种实现方式
1:懒汉式

package test;public class SingleTon {    private static SingleTon singleTon = null;    private SingleTon() {    };    // 懒汉式 线程不安全    public static SingleTon getSingleTon() {        if (singleTon == null) {            singleTon = new SingleTon();        }        return singleTon;    }    // 懒汉式 线程安全(但是每次访问)getSingleTon2都会在类上加锁,效率非常低    public static synchronized SingleTon getSingleTon2() {        if (singleTon == null) {            singleTon = new SingleTon();        }        return singleTon;    }    // 懒汉式 线程安全 先判断一次 如果为空 在类上加锁,然后再里面的判断是有几个线程进入    // 了第一个判断,但是只能走一个,走的这一个进行判断为空就创建,然后后面进入第一个空判断的线程    // 再判断就是存在的了。    public static SingleTon getSingleTon3() {        if (singleTon == null) {            synchronized (SingleTon.class) {                if (singleTon == null) {                    singleTon = new SingleTon();                }            }        }        return singleTon;    }    // 静态内部类    静态内部类只在类第一次加载是被加载,所以是线程安全的。private SingleTon(){}    private static class LazyClass {        private static final SingleTon SINGLE_TON = new SingleTon();    }    public static final SingleTon getSINGLE_TON() {        return LazyClass.SINGLE_TON;    }    //恶汉加载    private static final SingleTon TON = new SingleTon();    private static SingleTon getSingleTon4(){        return TON;    }}
0 0
原创粉丝点击