企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 线程安全性 线程安全定义:当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的 > 一个对象是否线程安全的,取决于它是否能被多个线程访问; > > 无状态的对象一定是线程安全的; #### JAVA同步机制 * synchronized * volatile * Explicit Lock显式锁\(JUC--Lock\) * 原子变量 ##### 共享与可变 * 共享意味着变量可以由多个线程同时访问 * 可变意味着变量值在生命周期内可以发生变化 首先需要理解线程安全的两个方面:执行控制和内存可见 * 执行控制的目的是控制代码执行(顺序)及是否可以并发执行 * 内存可见\(Memory Visibility\)控制的是线程执行结果在内存中对其它线程的可见性 ### 解决线程安全的主要手段 * 将对象设计为无状态对象 * 使用局部对象 * 并发访问资源时使用锁 线程同步会增加共享内存总线上的通信量,总线的带宽是有限的,并且所有的处理器都将共享这条总线 > 编写并发程序时,一种正确的编程方法是:首先使代码正确运行,然后再提高代码的速度; 【参考资料】 [https://www.jianshu.com/p/46f72d52a5be](https://www.jianshu.com/p/46f72d52a5be)