[关闭]
@aloxc 2018-06-21T01:45:22.000000Z 字数 546 阅读 1221

java保证线程安全的几种方法

高并发


java开发过程中,特别是高并发多线程访问临界(竞态)资源的时候,为了保证数据准确性(线程安全),我们可以通过以下一些方法来保证线程安全

  • synchronized关键词
    该关键词可以加到方法上,也可以加到一段代码段上
  • 锁(各种锁)
    加到一段代码上,一般在try里面加锁,在finally里面解锁
  • AtomicXXX类等使用CAS的,比如AtomicInteger类
    这些类使用一种cas算法来保证数据一致性,具体是使用Unsafe类里面的方法,该类是使用c实现基于cpu硬件技术支持的。一般说的lock-free,也就是无锁,通常都使用cas算法实现的。
  • AtomicXXXFieldUpdater等类,比如AtomicIntegerFieldUpdater和AtomicLongFieldUpdater
    该类其实也是使用cas实现的一些类,主要作用是当某个类中的int字段或者long字段不是线程安全的,但是又想让其“是”线程安全的,就可以使用该类来封装下,让这样的字段是线程安全的。
  • AtomicReference类
    该类是封装某个不是线程安全的类,封装后就是线程安全的,这个是让整个类“变成”线程安全的,而不是只是让某个字段“变成”线程安全。其实现原理也是使用cas算法

x

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注