threadlocal 工作原理

最近对 springmvc 的 threadlocal 工作原理感兴趣, 于是乎整理了一下其中奥秘,

首先, 多线程工作场景下, JVM 内存会分为两部分:线程的工作内存和主内存, 工作内存是线程之间相互独立的, 主内存是线程之间共享的, spring mvc 框架下的controller默认是单例模式, 并发情况下, 每个线程都会拷贝一份变量副本即局部变量, 存储于工作内存中, 所以spring mvc 的单例模式是线程安全的

如果线程之间需要同步某些信息, 怎么办呢
这个时候就要用到 volatile 关键字了, 比如 A 线程 对 volatile 修饰的变量做出了修改, 该变量会同步到主内存去,同时使其他线程的工作内存中的该变量副本会失效了, 其他线程再去获取该变量的时候, 就只能去主内存中获取到该变量 , 这样一来,被 volatile 修饰的变量在线程之间就实现同步了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值