架构师养成记--6.单例和多线程、ThreadLocal
2016-12-08 23:30
330 查看
一、ThreadLocal
使用wait/notify方式实现的线程安全,性能将受到很大影响。解决方案是用空间换时间,不用锁也能实现线程安全。
来看一个小例子,在线程内的set、get就是threadLocal
View Code
使用wait/notify方式实现的线程安全,性能将受到很大影响。解决方案是用空间换时间,不用锁也能实现线程安全。
来看一个小例子,在线程内的set、get就是threadLocal
1 public class DubbleSingleton { 2 3 private static DubbleSingleton ds; 4 5 public static DubbleSingleton getDs(){ 6 if(ds == null){ 7 try { 8 //模拟初始化对象的准备时间... 9 Thread.sleep(3000); 10 } catch (InterruptedException e) { 11 e.printStackTrace(); 12 } 13 synchronized (DubbleSingleton.class) { 14 if(ds == null){ 15 ds = new DubbleSingleton(); 16 } 17 } 18 } 19 return ds; 20 } 21 22 public static void main(String[] args) { 23 Thread t1 = new Thread(new Runnable() { 24 @Override 25 public void run() { 26 System.out.println(DubbleSingleton.getDs().hashCode()); 27 } 28 },"t1"); 29 Thread t2 = new Thread(new Runnable() { 30 @Override 31 public void run() { 32 System.out.println(DubbleSingleton.getDs().hashCode()); 33 } 34 },"t2"); 35 Thread t3 = new Thread(new Runnable() { 36 @Override 37 public void run() { 38 System.out.println(DubbleSingleton.getDs().hashCode()); 39 } 40 },"t3"); 41 42 t1.start(); 43 t2.start(); 44 t3.start(); 45 } 46 47 }
View Code
相关文章推荐
- JAVA多线程之ThreadLocal类
- 【JAVA-多线程】ThreadLocal 学习总结
- 从头认识多线程-4.3 ThreadLocal使用时需要注意的地方
- java多线程之ThreadLocal
- JAVA多线程-线程间通信(五)-类ThreadLocal的使用
- 使用 ThreadLocal 来解决多线程之间数据共享
- java多线程 ThreadLocal
- Java多线程下 ThreadLocal 的应用实例
- 译 -- Java 并发编程(多线程)三 | Semaphore | ThreadLocal | synchronized
- 多线程之ThreadLocal使用(创建线程池)
- Java 多线程之--ThreadLocal 简介
- 架构师养成记--23.sigar使用实例
- 通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分
- Java多线程之详解ThreadLocal类(一)
- 重新想象 Windows 8 Store Apps (48) - 多线程之其他辅助类: SpinWait, SpinLock, Volatile, SynchronizationContext, CoreDispatcher, ThreadLocal, ThreadStaticAttribute
- 架构师养成记--35.redis集群搭建
- java核心知识点学习----多线程间的数据共享和对象独立,ThreadLocal详解
- 架构师养成记
- 软件架构师核心技能养成计划
- 多线程(六)线程同步(下)-ThreadLocal,阻塞队列