对线程安全的理解
线程安全:
多线程在并发情况下操作共享数据是否可以得到我们想要的结果
- 线程安不安全,就是共享数据会不会因为多线程并发得不到正确的答案
- 怎么保证共享数据的安全性?
-
栈是每个线程独有的
,所以线程安全问题不用考虑栈丶本地方法丶程序计数器
。 -
堆是共享内存
,可以被所有线程访问,⼏乎所有的对象实例以及数组都在这⾥分配内存。 - 所有线程都可以访问到该区域,这就是造成线程安全问题的潜在原因。
怎么保证线程安全呢?
- 当然就是加锁了
synchronized
- 使得操作共享对象的时候,会产生
类似轮询机制的方式去操作共享数据
- 不让共享数据被多个线程同时修改
- 保证数据的
一致性
丶操作数据的原子性
丶线程对数据的隔离性
- 差不多把事务的四大原则保证了3个