`
baobaoupup
  • 浏览: 468944 次
文章分类
社区版块
存档分类
最新评论

多线程之4-------java 5原子性操作类的应用

 
阅读更多

先了解java5 线程并发库

查看api中 java.util.concurrent.atomic 包,

一 AtomicInteger 类,在程序中可能对整数执行加,有可能你加完了,还没取得新值,别人又加,

别人一增加,取出来的数可能就不是我希望得到的, 使用AtomicInteger 类可以解决多线程访问整数的问题.

使用 AtomicInteger类流程如下:

1. 首先 用构造方法 new AtomicInteger(int initialValue) 初始化一个值,

AtomicInteger ai = new AtomicInteger(0);

2. 要增加 3, 这样写

ai.addAndGet(3);

在执行此方法时,中途如果别人要加,肯定加不进,必须我加完了,返回值以后别人才能操作, 确保别人不会打断我。

注意:要减,实现时就加 负数

总结,多个线程访问同一个整数的情况,就需要用 AtomicInteger 类。

二 AtomicIntegerArray 类, 整数数组

它同样有一个增加方法,addAndGet(int i, int delta), 这里i 表示数组下标;

三 AtomicIntegerFieldUpdater 类,操作类里的整型变量

分享到:
评论

相关推荐

    java多线程安全性基础介绍.pptx

    java多线程安全性基础介绍 线程安全 正确性 什么是线程安全性 原子性 竞态条件 i++ 读i ++ 值写回i 可见性 JMM 由于cpu和内存加载速度的差距,在两者之间增加了多级缓存导致,内存并不能直接对cpu可见。 ...

    【2018最新最详细】并发多线程教程

    24.Java中atomic包中的原子操作类总结 25.大白话说java并发工具类-CountDownLatch,CyclicBarrier 26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题

    Java多线程Atomic包操作原子变量与原子类详解

    主要介绍了Java多线程Atomic包操作原子变量与原子类详解,简单介绍了Atomic,同时涉及java.util.concurrent中的原子变量,Atomic类的作用等相关内容,具有一定参考价值,需要的朋友可以了解下。

    92道Java多线程与并发面试题含答案(很全)

    Java并发编程的核心概念包括: 线程(Thread):线程是程序执行流的最小单元。...原子操作(Atomic Operations):原子操作是不可中断的操作,即在多线程环境中,这些操作要么完全执行,要么完全不执行。

    JUC多线程学习个人笔记

    原子操作:JUC提供了一些原子操作类,如AtomicInteger、AtomicLong等,可以实现线程安全的原子操作,避免了使用synchronized关键字的性能损耗。 锁机制:JUC提供了Lock接口和Condition接口,可以实现更细粒度的锁...

    JAVA实现Modbus RTU或Modbus TCPIP数据采集.rar

    5.将复合操作放在一个原子操作中执行,或用相同的锁来保护每个共享的和可变的变量。 6.增加同步必然会导致代码的复杂性,为性能牺牲代码简单性时不要太盲目,因为越复杂的代码,其不安全性越大。

    《Java并发编程的艺术》源代码

    第7章介绍了Java中的原子操作类,并给出一些实例。 第8章介绍了Java中提供的并发工具类,这是并发编程中的瑞士军刀。 第9章介绍了Java中的线程池实现原理和使用建议。 第10章介绍了Executor框架的整体结构和成员组件...

    Java并发学习-AtomicIntegerFieldUpdater字段原子更新类.docx

     也就是说调用者能够直接操作对象字段 ,那么就可以反射进行原子操作。 对于父类的字段,子类是不能直接操作的,尽管子类可以访问父类的字段。 只能是实例变量,不能是类变量,也就是说不能加static关键字。 ...

    Java并发编程实战

    第2章 线程安全性 2.1 什么是线程安全性 2.2 原子性 2.2.1 竞态条件 2.2.2 示例:延迟初始化中的竞态条件 2.2.3 复合操作 2.3 加锁机制 2.3.1 内置锁 2.3.2 重入 2.4 用锁来保护状态 2.5 活跃性与性能 第...

    java面试800题

    volatile:volatile变量表示保证它必须是与主内存保持一致,它实际是""变量的同步"", 也就是说对于volatile变量的操作是原子型的,如用在long 或 double变量前,一般用于多线程编程。 abstract:抽象,必须重载,修饰...

    使用Java的Memory Model实现一个简单的计数器.txt

    这个代码实现了一个简单的计数器,使用了Java的`AtomicInteger`类来保证多线程环境下的原子性操作。`AtomicInteger`是一个支持原子操作的整数类,它内部使用了CAS(Compare And Swap)算法来实现线程安全的操作。在...

    Java 并发编程实战

    2.1 什么是线程安全性 2.2 原子性 2.2.1 竞态条件 2.2.2 示例:延迟初始化中的竞态条件 2.2.3 复合操作 2.3 加锁机制 2.3.1 内置锁 2.3.2 重入 2.4 用锁来保护状态 2.5 活跃性与性能 第3章 对象的共享 ...

    JAVA面试必成功之JAVA面试秘籍

    Java多线程,包括多线程基础、synchronized连环问、线程池、AQS、原子类等。Spring,包括Spring基础、bean、IOC、AOP、事务、Spring MVC、Spring Boot等。MySQL,包括MySQL的基础、事务、锁、分库分表、读写分离、...

    java编发编程:JUC综合讲解

    JUC(java.util.concurrent)库是 Java 标准库的一部分,提供了丰富的多线程并发工具,旨在帮助开发者编写高性能、高可伸缩性的并发程序。下面综合介绍 JUC 库的几个核心概念以及它们在并发编程中的重要性。 1. ...

    Java并发编程.docx

    o原子性 :一个或多个CPU执行操作不被中断。 线程切换 可导致原子性问题。 o有序性 :编译器优化可能导致指令顺序发生改变。 编译器优化 可能导致有序性问题。 三个问题 o安全性问题 :线程安全 o活跃性...

    Java并发编程的艺术

    第7章介绍了Java中的原子操作类,并给出一些实例。第8章介绍了Java中提供的很多并发工具类。第9章介绍了Java中的线程池实现原理和使用建议。第10章介绍了Executor框架的整体结构和成员组件。第11章介绍几个并发编程...

    Java并发编程原理与实战

    JDK8的新增原子操作类LongAddr原理与使用.mp4 JDK8新增锁StampedLock详解.mp4 重排序问题.mp4 happens-before简单概述.mp4 锁的内存语义.mp4 volatile内存语义.mp4 final域的内存语义.mp4 实战:问题定位.mp4

    Java并发编程(学习笔记).xmind

    (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 (2)建模简单:通过使用线程可以讲复杂并且异步的工作流进一步分解成一组简单并且同步的工作流,每个工作流在一个单独的线程...

    2万字Java并发编程面试题合集(含答案,建议收藏)

    3、什么是多线程中的上下文切换?4、死锁与活锁的区别,死锁与饥饿的区别?5、Java 中用到的线程调度算法是什么?6、什么是线程组,为什么在 Java 中不推荐使用?7、为什么使用 Executor 框架?8、在 Java 中 ...

Global site tag (gtag.js) - Google Analytics