双重检查加锁机制--解决线程安全
2016-03-07 21:10
197 查看
双重检查加锁机制,指的是;并不是每次进入getInstance方法都需要同步,而是先不同步,进入方法过后,先检查实例是否存在,如果实例不存在才进入下面的同步锁,这是第一重检查。进入同步块后,再次检查实例是否存在,如果不存在就在同步快中创建一个实例。这样,只需同步一次,从而减少了同步情况下进行判断浪费的时间。
package singleton; public class Test { private volatile static Test instance = null; private Test(){} public static Test getInstance(){ //先检查实例是否存在,如果不存在才进入下面的同步块 if(instance == null){ //同步块,线程安全的创建实例 synchronized(Test.class){ //再次检查实例是否存在,如果不存在创建实例 if(instance==null){ instance = new Test(); } } } return instance; } }
相关文章推荐
- .NET中保证线程安全的高级方法Interlocked类使用介绍
- Java线程安全中的单例模式
- 深入线程安全容器的实现方法
- PHP 线程安全与非线程安全版本的区别深入解析
- 深入理解线程安全与Singleton
- 多线程问题及处理方法【转】
- Java之线程安全的简单理解
- android的线程安全
- ConcurrentHashMap并不是绝对线程安全的
- Springmvc并发访问的线程安全性问题
- Servlet和 Struts线程安全问题
- Spring Bean 中的线程安全
- 线程安全的单例模式
- java 3S
- JAVA 并发编程- Spring 并发访问的线程安全性问题
- Spring AOP的案例
- 成员变量与线程安全
- String,StringBuffer与StringBuilder的区别??
- 黑马程序员---第四讲 多线程的应用(2)
- struts2、spring多用户线程混乱