java如何保证线程安全

同步方法

方法上添加synchronized关键字,可以将整个方法作为同步块。当一个线程访问该方法时,其他线程必须等待,直到当前线程执行完毕。

同步代码块

在代码块中添加synchronized关键字,并指定锁对象,可以更细粒度地控制同步范围。锁对象可以是this(当前对象锁)、Class对象(类锁)或其他任意对象。

Lock 接口实现的各种锁,比如ReentrantLock。

原子类

java.util.concurrent.atomic包提供了多个原子类,如AtomicIntegerAtomicLongAtomicReference等,这些类通过 CAS(Compare-And-Swap)操作保证线程安全,无需使用同步机制。

不可变对象

final 修饰的不可变对象,一旦创建后,其状态就不能被修改。由于不可变对象的状态不会改变,因此天然线程安全。

线程安全的集合

java.util.concurrent包提供了多个线程安全的集合类,如ConcurrentHashMapBlockingQueue等,这些集合类通过锁分段、CAS 等技术保证线程安全。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计