JAVA ThreadLocal能实现线程同步吗

万物皆字节 2017-08-23 07:30:59
最近在网上搜索了一些关于实现同步的方案,有很多帖子说的是用ThreadLocal能实现同步;原理是每一个线程会复制一份主线程中设置的变量,然后各个线程分别操作这些变量;
我在想这叫同步吗?
我理解的同步是
1、执行有先后
2、不产生同时操作同一变量的情况
我觉得网上说的ThreadLocal实现线程同步好难理解,不知道是不是我理解错了。
...全文
291 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
万物皆字节 2017-08-23
  • 打赏
  • 举报
回复
是的,应该这样的设计目的是保证线程内数据安全,不是为了同步设计的;这几天一直在纠结这个问题,还以为自己理解错了 看到这样的解答我就放心了;
cdglynn 2017-08-23
  • 打赏
  • 举报
回复
用ThreadLocal存储线程实例私有的数据,不会被其他实例所访问。线程同步是指多线程协作或控制,单纯说ThreadLocal实现线程同步是不准确的。
maradona1984 2017-08-23
  • 打赏
  • 举报
回复
ThreadLocal又不难,自己点进去看他的实现不就行了.... 简单说就是一个用当前线程对象为key的map... 是否多线程操作,那看你保存的对象是否能被多个线程可见,比如1线程保存一个全局对象进入ThreadLocal,2线程也保存该对象进入ThreadLocal,这样其实没啥意义,ThreadLocal设计初衷就是线程独享数据,所以要避免保存可被多个线程可见的对象

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧