java实现线程局部变量:ThreadLocal
来源:互联网 发布:农村淘宝如何选址 编辑:程序博客网 时间:2024/05/17 17:59
需求:在多线程中最需要关心的就是数据的同步问题,防止数据因为多线程的访问而照成混乱
这个问题解决方案:比如将数据访问和处理过程加上同步锁synchronized,使线程排队当一个线程处理完后再重新竞争来处理,或者让线程等待wait(),再唤醒。
这样做当然可以,但每次一个线程拿到的数据都是上个线程处理完后的结果,那么如果我想要这个数据为本线程独有的,不会受到其他线程的影响呢?此时肯能你会觉得这很简单嘛,只要只要多线程之间不共享这个对象不就行了吗?但如果我们却又希望这个变量在这个该线程中是全局的。
问题:要做到线程全局的,那么就是static,但这样其他线程也就共享了,这就不能做到每个线程独享了,这是个矛盾的问题,那么如何做到线程内共享呢?这就是线程局部变量的概念了。
这个时候ThreadLocal就派上用场了。
使用:
1.定义一个线程局部变量。
private static ThreadLocal<Person> myPerson = new ThreadLocal<Person>() {
public Person initialValue() {
return null;
}
};
此处的Person为自定义类型,初始化设置为null,这样就定义了一个类型为Person的线程局部变量myPerson。
2.使用线程局部变量。
对线程局部变量操作时,通过ClassName.myPerson.get()这样返回得到了该线程的局部变量myPerson了,在该线程中这个应用时共享的,在当前线程外是隔离的不可见的。
- java实现线程局部变量:ThreadLocal
- 线程局部变量ThreadLocal
- ThreadLocal 线程局部变量
- 线程局部变量ThreadLocal
- ThreadLocal线程局部变量
- 线程局部变量ThreadLocal
- 线程局部变量ThreadLocal
- ThreadLocal 线程局部变量
- ThreadLocal 线程局部变量
- Java多线程探究-线程局部变量ThreadLocal
- ThreadLocal<T> Java线程局部变量
- 线程-ThreadLocal-线程局部变量
- 理解ThreadLocal(线程局部变量)
- 理解ThreadLocal(线程局部变量)
- ThreadLocal(线程局部变量)
- Java并发编程-线程局部变量(ThreadLocal)
- 线程局部变量ThreadLocal的认识
- 03____线程局部变量(ThreadLocal)
- 简约之美
- TCP/IP socket.c
- 2.1 castle
- SimpleDateFormat的测试,此类不是线程安全的。
- HDU 1671 Phone list (Tire tree)
- java实现线程局部变量:ThreadLocal
- 等有钱了,别忘了咱爸妈!(感人) (阅75115) ---------
- QML与C++交互
- ActionScript3学习笔记(1) - 基本语法
- csdn 也欺负我
- Andriod 九宫格
- 【计算机体系结构】十进制小数转换成二进制小数
- 10-12-05
- 共用体union用法讲解