博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java™ 教程(原子变量)
阅读量:7127 次
发布时间:2019-06-28

本文共 1007 字,大约阅读时间需要 3 分钟。

原子变量

包定义了支持单个变量的原子操作的类,所有类都有getset方法,类似于对volatile变量的读写操作,也就是说,set与在同一个变量上任何后续的get具有先发生关系,compareAndSet原子方法也具有这些内存一致性特性,适用于整数原子变量的简单原子算法也是如此。

要查看如何使用此包,让我们返回我们最初用于演示线程干扰的类:

class Counter {    private int c = 0;    public void increment() {        c++;    }    public void decrement() {        c--;    }    public int value() {        return c;    }}

使Counter免受线程干扰的一种方法是使其方法同步,如在中:

class SynchronizedCounter {    private int c = 0;    public synchronized void increment() {        c++;    }    public synchronized void decrement() {        c--;    }    public synchronized int value() {        return c;    }}

对于这个简单的类,同步是可接受的解决方案,但是对于更复杂的类,我们可能希望避免不必要的同步对活性的影响,用AtomicInteger替换int字段允许我们在不使用同步的情况下防止线程干扰,如在中:

import java.util.concurrent.atomic.AtomicInteger;class AtomicCounter {    private AtomicInteger c = new AtomicInteger(0);    public void increment() {        c.incrementAndGet();    }    public void decrement() {        c.decrementAndGet();    }    public int value() {        return c.get();    }}

转载地址:http://toael.baihongyu.com/

你可能感兴趣的文章
如何用条码标签打印软件实现商品价签制定会员价 ...
查看>>
如何轻松实现个性化推荐系统
查看>>
Mysql高级查询 内连接和外连接详解
查看>>
基于AWS的电子商务网站架构——Web前端
查看>>
基于险企传统资源优势的“一核三环”规划——互联网平台建设
查看>>
社交网络:有意义的不仅是邓巴数
查看>>
MySQL优化案例
查看>>
02 贝叶斯算法 - 案例一 - 鸢尾花数据分类
查看>>
场景数据互为表里!畅想2027,保险行业发展愿景
查看>>
hibernate4整合spring3出现java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition;...
查看>>
港科大教授权龙:三维视觉重新定义人工智能安防
查看>>
数据库巡检项
查看>>
通过阿里云APP,可以进行ECS,RDS 等实例的管理
查看>>
HBase-Region太多的问题简单总结
查看>>
说说我为什么看好Spring Cloud Alibaba
查看>>
STM32学习笔记(五)——通用定时器计数延时
查看>>
Android selector shape 无效问题
查看>>
Data Lake Analytics: 使用DataWorks来调度DLA任务
查看>>
zabbix配置web监控实现网页监控
查看>>
Postgresql lock锁等待检查
查看>>