社区
Java SE
帖子详情
ThreadLocal 与 线程同步?
_还行_
2012-07-27 02:06:00
ThreadLocal定义的变量,每一个线程过来,就分配一个变量(其实是一个Map),但是,既然每一个线程都与各自的变量相关,那么,怎么样实现同步呢?比如说,我的Thread1想把x++,然后Thread2想在
Thread1操作的基础上
执行x--;那么该如何实现呢?
...全文
200
4
打赏
收藏
ThreadLocal 与 线程同步?
ThreadLocal定义的变量,每一个线程过来,就分配一个变量(其实是一个Map),但是,既然每一个线程都与各自的变量相关,那么,怎么样实现同步呢?比如说,我的Thread1想把x++,然后Thread2想在Thread1操作的基础上执行x--;那么该如何实现呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
_还行_
2012-07-27
打赏
举报
回复
太霸道了,这样将变量分开,肯定是不会产生互斥的问题了。理解了,谢谢。
[Quote=引用 3 楼 的回复:]
ThreadLocal的本意就是每个线程一份,互不干扰,就是为了避免同步,提高可伸缩性
引用 2 楼 的回复:
也就是说ThreadLocal和synchronized还有Lock这种机制是有区别的(在功能的实现上)?但是,我看的Think in java 里说这种机制也可以解决资源共享的问题。
引用 1 楼 的回复:
那这种情况就不适合用ThreadLocal
[/Quote]
龙四
2012-07-27
打赏
举报
回复
ThreadLocal的本意就是每个线程一份,互不干扰,就是为了避免同步,提高可伸缩性
[Quote=引用 2 楼 的回复:]
也就是说ThreadLocal和synchronized还有Lock这种机制是有区别的(在功能的实现上)?但是,我看的Think in java 里说这种机制也可以解决资源共享的问题。
引用 1 楼 的回复:
那这种情况就不适合用ThreadLocal
[/Quote]
_还行_
2012-07-27
打赏
举报
回复
也就是说ThreadLocal和synchronized还有Lock这种机制是有区别的(在功能的实现上)?但是,我看的Think in java 里说这种机制也可以解决资源共享的问题。
[Quote=引用 1 楼 的回复:]
那这种情况就不适合用ThreadLocal
[/Quote]
龙四
2012-07-27
打赏
举报
回复
那这种情况就不适合用ThreadLocal
java 中
ThreadLocal
本地线程和同步机制的比较
主要介绍了java 中
ThreadLocal
本地线程和同步机制的比较的相关资料,需要的朋友可以参考下
Java中的
线程同步
与
ThreadLocal
无锁化线程封闭实现
主要介绍了Java中的
线程同步
与
ThreadLocal
无锁化线程封闭实现,Synchronized关键字与
ThreadLocal
变量的使用是Java中线程控制的基础,需要的朋友可以参考下
谈谈Java中的
ThreadLocal
什么是
ThreadLocal
ThreadLocal
一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过
ThreadLocal
可以将对象的可见范围限制在同一个线程内。 跳出误区 需要重点强调的的是,不要拿
ThreadLocal
和synchronized做类比,因为这种比较压根是无意义的!sysnchronized是一种互斥同步机制,是为了保证在多线程环境下对于共享资源的正确访问。而
ThreadLocal
从本质上讲,无非是提供了一个“线程级”的变量作用域,它是一种线程封闭(每个线程独享变量)技术,更直白点讲,Thre
ThreadLocal
与
线程同步
机制的比较
线程同步
机制通过对象的锁机制保证同一时间只有一个线程去访问变量,该变量时多个线程共享的。
ThreadLocal
则为每一个线程提供了一个变量副本,从而隔离了多个线程访问数据的冲突,
ThreadLocal
提供了线程安全的对象封装,在编写多线程代码时,可以把不安全的代码封装进
ThreadLocal
。概括的说,对于多线程资源共享的问题,
线程同步
机制采取了时间换空间的方式,访问串行化,对象共享化;而T...
为什么
ThreadLocal
是线程安全的?
ThreadLocal
的使用 在项目中我们可以通过
ThreadLocal
来存储用户信息,其中一般会在过滤器/拦截器的入口处初始化用户信息,并在执行结束后对其进行清理。这样从请求进来一直到返回,我们只需要通过线程变量
ThreadLocal
获取用户信息即可,而不用每次都从数据库查出来。 因为
ThreadLocal
是线程安全的,所以这里我们把它声明为一个单例。 public class UserHolder { private final static
ThreadLocal
<Us...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章