Java并发编程中的threadLocal类
首先ThreadLocal类用于创建只能由同一个线程读取和写入的线程局部变量。
例子:如果两个线程正在访问引用相同的threadlocal变量的代码,那么每个线程都不会看到任何其他线程操作完成的线程变量。
ThreadLocal类中可用的重要方法
1、public T get() 返回当前线程的线程局部变量的副本中的值
2、protected T initialValue() 返回此线程局部变量的当前线程的“初始值”
3、public void remove() 删除此线程的局部变量的当前线程的值
4、public void set(T value) 当前线程的局部变量的副本设置为指定的值
ThreadLocal 是线程的局部变量, 是每一个线程所单独持有的,其他线程不能对其进行访问,
通常是类中的 private static 字段,是对该字段初始值的一个拷贝,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联我们知道有时候一个对象的变量会被多个线程所访问,这时就会有线程安全问题,当然我们可以使用synchorinized 关键字来为此变量加锁,进行同步处理,从而限制只能有一个线程来使用此变量,但是加锁会大大影响程序执行效率,此外我们还可以使用ThreadLocal来解决对某一个变量的访问冲突问题。当使用ThreadLocal维护变量的时候 为每一个使用该变量的线程提供一个独立的变量副本,即每个线程内部都会有一个该变量,这样同时多个线程访问该变量并不会彼此相互影响,因此他们使用的都是自己从内存中拷贝过来的变量的副本, 这样就不存在线程安全问题,也不会影响程序的执行性能。
有一篇不错的代码分析文章,感兴趣的伙伴可以看看
http://www.cnblogs.com/dolphin0520/p/3920407.html