保证线程安全的方法

2025-11-12 00:00:15

1、原子性:一个或者多个操作在 CPU 执行的过程中被中断

2、可见性:一个线程对共享变量的修改,另外一个线程不能马上知道

3、有序性:程序执行的顺序没有按照代码的先后顺序执行

1、针对第一个因素,JDK里面提供了很多atomic类, AtomicLong, AtomicBoolean等等,这些类本身可以通过CAS来保证操作的原子性;Java也提供了锁机制,锁内的代码块在同一时刻只能有一个线程执行,例如synchronized关键字。

2、针对第二个因素,可用synchronized关键字加锁保证,将操作共享数据的语句加入synchronized关键字,同一时刻只能有一个线程执行,直到完成。

也可用volatile关键字,可以保证修改共享数据后对其他线程可见。

3、针对第三个因素可以使用Lock锁。Lock锁很灵活,但需要手动释放和开启。在并发量比较高的情况下,Lock锁优于synchronized关键字。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢