线程本地化存储如何保证线程安全
-
- 1、背景
- 2、详细分析
1、背景
在并发编程中,可能最害怕听到一个词就是线程不安全。因为它意味着程序运行的时候,可能出现数据的读取或写入不准确等情况发生,
2、详细分析
可能对于每个工程师来说都不陌生,就是我们工作中常见的一个环节,我们都会对代码在git上代码进行拉取、提交,进行需求或功能的开发,但是我们经常会遇到一些突如其来的问题,如下图所示
几乎每个开发工程师都遇到过,也很郁闷,那就是代码冲突。提交代码的时候,莫名其妙发现不能提交,这是因为git上的代码已经被人修改了,需要先合并代码。
不难看出,出现代码冲突的原因,是每个工程师本地都有一份代码的副本,在提交代码的时候,代码可能已经被其他工程师给修改了。其实核心问题是多个工程师共享了一份代码,每个人本地都有自己代码副本,其他人修改git上的代码,我们没有感知,就导致了代码错乱。其实对于java来说也是一样的,如果一个变量对于多个线程是共享的,就会出现线程不安全的情况发生,我们来看下