栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java懒汉式单例模式中synchronized多种使用方法的比较

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java懒汉式单例模式中synchronized多种使用方法的比较

 

单例模式---> 懒汉式

public class Student {

    private static Student instance = null;

    private Student() {}

    对象相同
    private static Student getInstance(){
        //如果第一个线程过来发现Student对象为null,则进入同步方法
        //如果第二个线程过来发现对象已经存在则不会在进入同步方法,而是直接获取已经存在的对象
        if(instance == null){
            synchronized (Student.class) {
                if(instance == null){
                    instance  = new Student();
                }
            }
        }
        return instance;
    }

    
    private static synchronized Student getInstance2(){
        if(instance == null){
            instance  = new Student();
        }
        return instance;
    }

    
    private static Student getInstance3(){
        synchronized (Student.class) {
            if(instance == null){
                instance = new Student();
            }
        }
        return instance;
    }

    
    private static Student getInstance4(){
        if (instance == null){
            instance = new Student();
        }
        return instance;
    }

    static class SyncStudent extends Thread{
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName()+"---->" + Student.getInstance4());
        }
    }

    public static void main(String[] args) {
        SyncStudent syncStudent1 = new SyncStudent();
        SyncStudent syncStudent2 = new SyncStudent();
        syncStudent1.start();
        syncStudent2.start();
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425379.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号