线程安全
什么是线程安全:
⼤⽩话:
多线程下并发同时对共享数据进⾏读写,会造成数据混乱 = 线程不安全
当多线程并发访问临界资源时,如果破坏其原⼦性、可⻅性、有序性,可能会造成数据不⼀致。
- 临界资源:共享资源(同⼀对象)同时读写,⼀次仅允许⼀个线程使⽤,才可保证其正确性。
原子性:单一,不可分割的操作
可见性:
有序性(指令重排):
有序性最终表述的现象是CPU是否按照既定代码顺序执⾏依次执⾏指令。编译器和CPU为了提⾼指令的执⾏效率可能会进⾏指令重排序,这使得代码的实际执⾏⽅式可能不是按照我们所认为的⽅式进⾏。