线程本地化存储如何保证线程安全

线程本地化存储如何保证线程安全

1、背景

在并发编程中,可能最害怕听到一个词就是线程不安全。因为它意味着程序运行的时候,可能出现数据的读取或写入不准确等情况发生,
在这里插入图片描述

2、详细分析

可能对于每个工程师来说都不陌生,就是我们工作中常见的一个环节,我们都会对代码在git上代码进行拉取、提交,进行需求或功能的开发,但是我们经常会遇到一些突如其来的问题,如下图所示
在这里插入图片描述
几乎每个开发工程师都遇到过,也很郁闷,那就是代码冲突。提交代码的时候,莫名其妙发现不能提交,这是因为git上的代码已经被人修改了,需要先合并代码。

在这里插入图片描述
不难看出,出现代码冲突的原因,是每个工程师本地都有一份代码的副本,在提交代码的时候,代码可能已经被其他工程师给修改了。其实核心问题是多个工程师共享了一份代码,每个人本地都有自己代码副本,其他人修改git上的代码,我们没有感知,就导致了代码错乱。其实对于java来说也是一样的,如果一个变量对于多个线程是共享的,就会出现线程不安全的情况发生,我们来看下图示例

在这里插入图片描述
其实就是多个线程对同一个数据进行读取和修改的流程,每个线程自己都有本地的数据副本,其他线程对数据的修改,自己感知不到,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值