ThreadLocal 线程局部变量
2016-09-28 20:04
323 查看
ThreadLocal线程局部变量
与之前写的Unsafe一样,都是为了解决并发访问变量的问题。与synchronized等加锁不同的,ThreadLocal完全不提供锁,而是利用空间换时间,为每个线程都提供了变量的独立副本,保障线程安全。package com.chen.thread; import java.text.SimpleDateFormat; import java.util.Random; /** * Created by CHEN on 2016/9/28. */ public class ThreadLocalExample implements Runnable { //建立一个SimpleDateFormat的本地线程变量 private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>() { //初始化 @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyyMMdd HHmm"); } }; public static void main(String[] args) throws InterruptedException { ThreadLocalExample obj = new ThreadLocalExample(); for (int i = 0; i < 10; i++) { Thread t = new Thread(obj, "" + i); Thread.sleep(new Random().nextInt(1000)); t.start(); } } @Override public void run() { //输出构造时的变量值 System.out.println("Thread Name= " + Thread.currentThread().getName() + " default Formatter = " + formatter.get().toPattern()); try { Thread.sleep(new Random().nextInt(1000)); } catch (InterruptedException e) { e.printStackTrace(); } //对当前线程造成影响 formatter.set(new SimpleDateFormat()); //影响之后的结果 System.out.println("Thread Name= " + Thread.currentThread().getName() + " formatter = " + formatter.get().toPattern()); } }
相关文章推荐
- 深入理解线程局部变量:ThreadLocal
- ThreadLocal线程局部变量
- 深入理解线程局部变量:ThreadLocal
- java Thread之ThreadLocal(线程局部变量)
- 线程局部变量ThreadLocal
- Java多线程探究-线程局部变量ThreadLocal
- 线程局部变量ThreadLocal
- Hibernate用ThreadLocal模式 (线程局部变量模式) 管理Session
- 线程局部变量ThreadLocal
- Java并发编程-线程局部变量(ThreadLocal)
- 深入理解线程局部变量:ThreadLocal
- ThreadLocal共享线程局部变量和线程同步机制的区别
- 深入理解线程局部变量:ThreadLocal
- 并发编程-线程局部变量ThreadLocal
- ThreadLocal 线程局部变量
- ThreadLocal线程局部变量
- 深入理解线程局部变量:ThreadLocal
- ThreadLocal(线程局部变量)
- 03____线程局部变量(ThreadLocal)
- 线程-ThreadLocal-线程局部变量