java并发-原子性

java实现原子性

java.util.concurrent.atomic 包中提供了很多高级的指令,来保证操作的原子性
Atomiclnteger 类提供了方法 incrementAndGet 用来自增

public static AtomicLong nextNumber = new AtomicLong();
long id = nextNumber.incrementAndGet()

incrementAndGet 方法以原子方式将 AtomicLong 自增, 并返回自增后的值。

如果更复杂的更新可以使用compareAndSet方法
实现跟踪线程并观察最大值

  do {
      oldValue = largest.get();
      newValue = Max.max(oldValue,newValue);
  }while(!largest.compareAndSet(oldValue, newValue))

java8 可以使用循环表达式
largest.updateAndGet(x -> Math.max(x, observed));

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 原子性布尔 AtomicBoolean AtomicBoolean 类为我们提供了一个可以用原子方式进行读和...
    高广超阅读 5,813评论 1 14
  • 译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.j...
    高广超阅读 5,456评论 1 68
  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 4,175评论 2 8
  • 2016年,7月的第一天, 说不清的晴或雨。我的起点站是阳光明媚的,而我的终点站也将是干燥而暖和的,现在所坐的动车...
    herozou阅读 181评论 0 0
  • 春节到了,对于我们做工程的人是个最头疼的事,因为过年了肯定要给各位领导拜年,送礼就是头等大事。但是送什么样的礼,如...
    最好的安排007阅读 17评论 0 0

友情链接更多精彩内容