摘要:
本为非原创,引用自http://dracularking.iteye.com/blog/676142IBM多线程threadUPHTMLJava代码 privatevolatilestaticSingletoninstance; publicstaticSingletongetInstance(){ if(instance==null){ synchronized(Singleton.class){//1 if(instance==null)//2 instance=newSingleton();//3 } } returninstance; }private volatile static 阅读全文
摘要:
对这个问题,好多人可能第一反应就是使用syschronized关键字,诚然应用这个关键字可以解决问题(仍是有条件线程安全的且低效的),但是在无意中看java源码时,看到了另一种更高效的方式—采用lock的方式。在ReentrantReadWriteLock的源码注释中,作者写了这样一段代码:class RWDictionary { private final Map<String, Data> m = new TreeMap<String, Data>(); private final ReentrantReadWriteLock rwl = new Reentrant 阅读全文