何为线程安全,如何实现线程安全(线程同步)?

一、线程安全

线程安全指的是内存的安全,在每个进程的内存空间中都会有一块特殊的公共区域,通常称为堆(内存)。进程内的所有线程都可以访问到该区域,这就是造成问题的潜在原因。

所以线程安全指的是,在堆内存中的数据由于可以被任何线程访问到,在没有限制的情况下存在被意外修改的风险。即堆内存空间在没有保护机制的情况下,对多线程来说是不安全的地方,因为你放进去的数据,可能被别的线程“破坏”。

https://zhuanlan.zhihu.com/p/67905621

二、如何实现线程安全(线程同步)?

1.使用synchronized 关键字 同步方法

2.使用synchronized 关键字同步代码块

3.使用特殊域变量(volatile)实现线程同步

4.使用重入锁实现线程同步

  如果synchronized关键字能满足用户的需求,就用synchronized,因为它能简化代码 。如果需要更高级的功能,就用ReentrantLock类,此时要注意及时释放锁,否则会出现死锁,通常在finally代码释放锁。

5.使用局部变量ThreadLocal实现线程同步

   如果使用ThreadLocal管理变量,则每一个使用该变量的线程都获得该变量的副本,副本之间相互独立,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。

https://www.cnblogs.com/xiaoxi/p/7679470.html

原文地址:https://www.cnblogs.com/jingpeng77/p/13549127.html