摘要: 线程带来的风险 安全性问题 ----> 安全性的含义是“永远不发生糟糕的事” 线程安全问题非常复杂,在没有充分同步的情况下,多个线程中的操作顺序是无法预测的。 如果没有同步,那么无论是编译器、硬件还是运行时,都可以随意安排操作的执行顺序和时间,例如对寄存器或者处理器中的变量进行缓存(缓存后成为当前线程的局部变量),而这些被缓存的变量对于其他线程来说是暂时(甚至永久)不可见的。
Java中使用锁来实现同步、原子操作等功能,但锁的使用会带来性能方面的问题。当执行时间较长的计算或者可能无法快速完成的操作时(例如网络IO、控制台IO),一定不要持有锁。
来源: https://yq.aliyun.com/articles/231716