ThreadLocal浅析
2015-10-27 17:37
316 查看
早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。
通过示例来熟悉使用ThreadLocal。
public class Test004 {
static final ThreadLocal<String> sThreadLocal0 = new ThreadLocal<>();
static final ThreadLocal<String> sThreadLocal1 = new ThreadLocal<>();
static final ThreadLocal<Integer> sThreadLocal2 = new ThreadLocal<>();
public static void main(String args[]){
sThreadLocal0.set("得分");
sThreadLocal0.set("小王得分是");
sThreadLocal1.set(":");
sThreadLocal2.set(100);
System.out.println(sThreadLocal0.get() + sThreadLocal1.get() + sThreadLocal2.get());
}
}
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。
从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。
通过示例来熟悉使用ThreadLocal。
public class Test004 {
static final ThreadLocal<String> sThreadLocal0 = new ThreadLocal<>();
static final ThreadLocal<String> sThreadLocal1 = new ThreadLocal<>();
static final ThreadLocal<Integer> sThreadLocal2 = new ThreadLocal<>();
public static void main(String args[]){
sThreadLocal0.set("得分");
sThreadLocal0.set("小王得分是");
sThreadLocal1.set(":");
sThreadLocal2.set(100);
System.out.println(sThreadLocal0.get() + sThreadLocal1.get() + sThreadLocal2.get());
}
}
相关文章推荐
- mac下adernosdk QCompress无法使用
- Go语言的os包中常用函数初步归纳
- sql中多条重复数据只更新其中一条
- LLDB学习笔记
- matlab的.dat文件读取
- SVPullToRefresh问题解决 同时进行上拉和下拉刷新
- spring的jdbcTemplate的实现
- mvc,首页静态页,无静态页走路由,如何设置?
- UVA10054 The Necklace
- shell脚本中的[]/[[]]区别
- MAC下如何修改hosts文件
- Android启动另一个应用
- MySQL中重复索引和重复外键清理
- 代码:猜数字!
- 数据结构 — 3.模式匹配
- NPOI创建Word
- 微信开发学习路线
- 他表选择 设置能否选择 注意事项
- 单机部署Hadoop
- bzoj1063: [Noi2008]道路设计