ThreadLocal不是用来解决共享对象的多线程访问问题的

通过ThreadLocal的set()方法设置到线程的ThreadLocal.ThreadLocalMap里的是是线程自己要存储的对象,其他线程不需要去访问,也是访问不到的。各个线程中的ThreadLocal.ThreadLocalMap以及ThreadLocal.ThreadLocal中的值都是不同的对象。

set仅仅是表示将线程ThreadLoaclMap中table处的value值重新设置,即覆盖。

对于同一个ThreadLocal对象而言,set后,table中绝不会多出一个数据:

1
2
3
4
public class Tools
{
    public static ThreadLocal<String> t1 = new ThreadLocal<String>();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class ThreadLocalThread extends Thread
{
    private static AtomicInteger ai = new AtomicInteger();
 
    public ThreadLocalThread(String name)
    {
        super(name);
    }
 
    public void run()
    {
        try
        {
            for (int i = 0; i < 3; i++)
            {
                Tools.t1.set(ai.addAndGet(1) + "");
                System.out.println(this.getName() + " get value--->" + Tools.t1.get());
                Thread.sleep(200);
            }
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
    }
}

<wiz_tmp_tag class="wiz-block-scroll">

 

1、ThreadLocal不是集合,它不存储任何内容,真正存储数据的集合在Thread中。ThreadLocal只是一个工具,一个往各个线程的ThreadLocal.ThreadLocalMap中table的某一位置set一个值的工具而已2、同步与ThreadLocal是解决多线程中数据访问问题的两种思路,前者是数据共享的思路,后者是数据隔离的思路

3、同步是一种以时间换空间的思想,ThreadLocal是一种空间换时间的思想

4、ThreadLocal和request区别:

(1)ThreadLocal只能存一个值,一个Request由于是Map形式的,可以用key-value形式存多个值

(2)ThreadLocal一般用在框架,Request一般用在表示层、Action、Servlet

 

最新文章

  1. [转][iOS]NSHash​Table &amp; NSMap​Table
  2. 内核控制Meta标签:让360浏览器默认使用极速模式打开网页(转)
  3. webstorm运行到服务器(Apache)
  4. 安卓自定义View(一)自定义控件属性
  5. ios基础篇(二十八)—— UITableView的上拉加载
  6. 通过XmlHttpRequest实现带进度条异步下载文件
  7. discuz 二次开发
  8. 深度学习 vs 机器学习 vs 模式识别
  9. 个人对js闭包的理解
  10. SQL函数:字符串中提取数字,英文,中文,过滤重复字符(转)
  11. 配置linux软件下载跟新地址
  12. (74)Wangdao.com第十三天_Object 对象_属性描述对象
  13. [转] KVM scalability and consolidation ratio: cache none vs cache writeback
  14. CSS——nth-child()
  15. mac os下不同工具go env下gopath显示不同
  16. Manjaro 玩机记录
  17. MySQL 大致测试更新时间
  18. 【转】如何在win10(64位系统)上安装apache服务器
  19. 操作系统之CPU管理的直观想法
  20. js 之 this call apply

热门文章

  1. CodeForce 448C 木片填涂问题
  2. hdu 2112
  3. 【转】SQL Server 创建约束图解 唯一 主键-界面操作
  4. BZOJ1126: [POI2008]Uci
  5. 给Ubuntu更换成163的源(sources.list)Unable to locate package
  6. CodeForces 596A Wilbur and Swimming Pool
  7. Generate Parentheses(组合,回溯)
  8. [洛谷U22156]未曾届到游览(矩阵树定理)
  9. 2016 ACM-ICPC CHINA-Final
  10. java基础语法4--封装,继承,多态