【面试题】懒汉式的多线程安全问题解决方案
2013-10-19 14:45
489 查看
先判断空再判断锁
用读写锁解决
public class test3 { public static void main(String[] args) { Single single=Single.getInstance(); } } class Single{ private Single(){} private static Single single=null; public static Single getInstance() { if(single==null) { synchronized (Single.class) { if(single==null) single=new Single(); } } return single; } }
用读写锁解决
package xiaozhijingtian; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class test3 { public static void main(String[] args) { Single single=Single.getInstance(); } } class Single{ private Single(){} private static Single single=null; private static ReadWriteLock readWriteLock=new ReentrantReadWriteLock(); public static Single getInstance() { readWriteLock.readLock().lock(); if(single==null) { readWriteLock.readLock().unlock(); readWriteLock.writeLock().lock(); if(single==null) single=new Single(); readWriteLock.writeLock().unlock(); readWriteLock.readLock().lock(); } readWriteLock.readLock().unlock(); return single; } }
相关文章推荐
- 黑马程序员---<<基础加强---1.5新特性(中)(注解(Annotation))>>
- 一个程序员对职业生涯的思考和总结
- 10步让你成为更优秀的程序员
- 从程序员到项目经理(一)
- 胡震宁先生的《职业生涯规划》
- 一些Google面试题
- GetMemory函数详解 (360面试题)
- [google面试CTCI] 1-8.判断子字符串
- [google面试CTCI] 1-7.将矩阵中特定行、列置0
- [google面试CTCI] 1-6.图像旋转问题
- [google面试CTCI] 1-5.替换字符串中特定字符
- 面试题40:数组中只出现一次的数字
- leetcode:Recover Binary Search Tree (修正二叉查找树错误节点,不改变结构)【面试算法题】
- [google面试CTCI] 1-6.图像旋转问题
- 【程序员的自我修养】番茄时间管理法:一个番茄是如何让你工作更有效率的
- Sizeof面试题
- [google面试CTCI] 1-5.替换字符串中特定字符
- [google面试CTCI] 1-4.判断两个字符串是否由相同字符组成
- [google面试CTCI] 1-4.判断两个字符串是否由相同字符组成
- [google面试CTCI]1-3.字符串去重