package cn.yqh.interview; public class Singleton { private static volatile Singleton singleton = null; private Singleton() { } public static Singleton getInstance(){ //第一次校验singleton是否为空 if(singleton==null){ synchronized (Singleton.class){ //第二次校验singleton是否为空 if(singleton==null){ singleton = new Singleton(); } } } return singleton; } public static void main(String[] args) { for (int i = 0; i < 100; i ) { new Thread(new Runnable() { public void run() { System.out.println(Thread.currentThread().getName() " : " Singleton.getInstance().hashCode()); } }).start(); } } }
END 十期推荐 【201期】面试官:String长度有限制吗?是多少?还好我看过 【211期】面试官:说说为什么HTTPS是安全的 【212期】面试官:说说什么是单点登录?什么是SSO?什么是CAS? 【213期】如何保障消息中间件100%消息投递成功?如何保证消息幂等性? 【214期】面试官:聊聊常见的加密算法、原理、优缺点、用途 【215期】MySQL中事务和锁的重点和难点,一次性讲清楚! 【216期】JVM超神之路 【217期】面试官:你能说一下Redis的常见应用场景吗? 【218期】面试官:你能简单介绍一下 RabbitMQ 及它的使用场景吗 【219期】面试官:谈谈MySQL的limit用法、逻辑分页和物理分页 【220期】面试官:你能说说分布式锁,进程锁,线程锁吗? ? ~