ThreadLocal 对象的使用
来源:互联网 发布:战地4枪械数据 编辑:程序博客网 时间:2024/05/16 14:15
ThreadLocal 是用来保存每个线程变量的一个集合,这样可以确保每个线程都有自己的私有变量。这里写了个例子,如下:
线程类:
package com.lenovo.plm.dms.p13;public class MyThreadA extends Thread { private ThreadLocal<String> local; public MyThreadA(ThreadLocal<String> local){ this.local = local; } @Override public void run() { // TODO Auto-generated method stub super.run(); for(int i = 0;i<10;i++){ System.out.println(local.get()); System.out.println(Thread.currentThread().getName()+":"+i); local.set(Thread.currentThread().getName()+i); System.out.println(local.get()); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}
执行类:
package com.lenovo.plm.dms.p13;public class Main { public static void main(String[] args) { ThreadLocal<String> local = new ThreadLocal<String>(){ @Override protected String initialValue() { // TODO Auto-generated method stub return "helloworld"; } }; for(int i=0;i<10;i++){ MyThreadA t = new MyThreadA(local); t.start(); } }}
执行的部分结果如下:
Thread-19
Thread-58
Thread-5:9
Thread-59
Thread-98
Thread-68
Thread-6:9
Thread-69
Thread-28
Thread-9:9
Thread-2:9
Thread-99
Thread-29
可以看出每个线程都保存了自己的私有变量,且和其他线程是独立的。
需要说明一点,ThreadLocal类刚开始是没有初始化的,因此需要先set再get取值才可以,因此这里有一个方法initialValue()是用来初始化ThreadLocal类中的初始值。用法见上面代码。
关于ThreadLocal的原理,是维护了一个HashMap,其key值是Thread.currentThread,value就是object类型,具体网上有一篇文章写的不错,放在这里参考吧。
http://www.cnblogs.com/dolphin0520/p/3920407.html
0 0
- ThreadLocal 对象的使用
- 使用ThreadLocal准确找到操作线程的对象
- ThreadLocal的使用- -
- ThreadLocal的使用
- ThreadLocal 的使用
- ThreadLocal的使用
- 关于ThreadLocal的使用
- Threadlocal类的使用
- ThreadLocal的使用
- ThreadLocal的使用
- ThreadLocal的使用
- java ThreadLocal的使用
- 关于ThreadLocal的使用
- ThreadLocal的优雅使用
- ThreadLocal的使用
- 关于ThreadLocal的使用
- ThreadLocal的使用
- ThreadLocal的使用
- 关于/etc/rc.local以及/etc/init.d
- POJ 3580SuperMemo
- Apache2.4 Virtual Hosts配置:模拟真实网站+同时开发多个Web项目
- UASCO Your Ride Is Here
- HDU 黑白棋 (找规律)
- ThreadLocal 对象的使用
- function, new function, new Function之间的区别
- log4j.properties 详解与配置步骤
- vector::erase()方法的详细介绍及问题解答 (2010-04-20 09:09:11) http://bbs.csdn.net/topics/390902650?page=1
- 在mac上配置Adb
- service与runnable的应用
- 国内互联网公司算法&机器学习岗(阿里星)面试总结
- 【EA教程】——类图生成框架
- 接口和抽象类的区别