这个类真的非常实用,更重要的是 它确实非常简单:
附上自己的代码,可以自己试试:
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。
代码:
package test; import java.util.concurrent.atomic.AtomicInteger; /** * 来看AtomicInteger提供的接口。 //获取当前的值 public final int get() //取当前的值,并设置新的值 public final int getAndSet(int newValue) //获取当前的值,并自增 public final int getAndIncrement() //获取当前的值,并自减 public final int getAndDecrement() //获取当前的值,并加上预期的值 public final int getAndAdd(int delta) * @author YangBaoBao * */ public class AtomicIntegerDemo { public static void main(String[] args) { AtomicInteger ai=new AtomicInteger(0); int i1=ai.get(); v(i1); int i2=ai.getAndSet(5); v(i2); int i3=ai.get(); v(i3); int i4=ai.getAndIncrement(); v(i4); v(ai.get()); } static void v(int i) { System.out.println("i : "+i); } }
相关推荐
#### 三、AtomicInteger简介 `AtomicInteger`是Java并发包`java.util.concurrent.atomic`中的一个类,它提供了一种原子更新整数的方法。相比于传统的同步机制如`synchronized`关键字或`java.util.concurrent.locks....
SDS简介 SDS与C字符串的区别 常数复杂度获取字符串长度 O(n) O(1) 杜绝缓冲区溢出 修改字符串长度时内存重分配 空间预分配:对字符串进行增长操作时的优化,SDS API 会检查SDS当前空间是否符合修改条件,如果...
在Java 5.0及以上版本,通过引入`java.util.concurrent`包,非阻塞算法得以实现,这主要归功于原子变量类,如`AtomicInteger`。 在多线程环境中,当多个线程访问一个共享资源时,如果没有适当的同步机制,就会导致...
第一章:Java并发简介 1.1 什么是并发编程 1.2 Java中的并发编程模型 1.3 线程的生命周期 第二章:基础同步工具 2.1 synchronized关键字 2.2 volatile关键字 第三章:锁机制 3.1 ReentrantLock 3.2 ...
在Java中,非阻塞算法通常涉及原子变量类,如AtomicInteger、AtomicLong等,它们提供了一组原子性的操作,比如get、set、incrementAndGet等。这些操作在单个线程中执行时,如同一个不可分割的步骤,即使在多线程环境...
- **`AtomicInteger`简介**: - `AtomicInteger`是`java.util.concurrent.atomic`包下的一个类,用于提供原子整型操作。 - 它通过底层硬件支持实现了高效的线程安全操作,避免了传统同步机制(如`synchronized`...
#### 一、ThreadLocal简介与重要性 ThreadLocal是一个非常重要的Java并发工具类,它的核心概念在于为每一个线程提供了一个独立的变量副本,从而避免了线程之间的数据竞争问题。这使得每个线程在访问ThreadLocal变量...
## 项目简介 本项目是一个基于Spring Boot框架的高并发秒杀系统,旨在处理高负载情况下的秒杀与抢购场景。系统结合了Redis、RabbitMQ、MySQL等技术,提供了多种解决方案来优化系统的性能和并发处理能力。通过使用...
一、原子变量类简介 Java中的原子变量类是为了解决多线程环境下数据的一致性问题而设计的。它可以确保多线程环境下数据的原子性、可见性和有序性。原子变量类的主要特点是它可以在多线程环境下提供高性能的并发访问...
- 双重检查锁定(Double-Checked Locking)、 volatile 关键字、原子变量类(AtomicInteger, AtomicBoolean 等)等机制用于保证线程安全。 上述文件名可能是电子书中章节的链接,分别涵盖了不同主题的线程内容,如...
Java并发编程还需要注意线程安全的数据结构,如`ConcurrentHashMap`、`AtomicInteger`等,它们内部已经实现了高效的并发控制,避免了在多线程环境下手动加锁的复杂性。 最后,使用锁时必须谨慎,防止死锁、活锁和...
##### 4.1 线程池简介 线程池是一种管理多个工作线程的机制,它可以重用预创建的线程,避免频繁创建和销毁线程的开销。线程池通常由以下部分组成: - **核心线程数量**:线程池中始终维持的线程数量。 - **最大线程...
原子操作简介 原子操作是不可分割的操作,即使在多线程环境下,它们也总是完整执行,不会被其他线程打断。这在处理共享数据时特别有用,因为它们可以确保数据的一致性,而不需要全局锁带来的开销。 ### 2. ...
1. 操作系统基础知识:微内核与宏内核、鸿蒙简介、硬件基础、进程管理、内存管理、进程调度算法、进程线程与协程、中断与系统调用等。 2. 计算机网络基础知识:七层模型、四层模型、TCP与UDP、三次握手与四次挥手、...
- **JCTools简介:** 简介JCTools库的背景和发展历史。 - **JCTools提供的高级并发工具:** 展示JCTools中的一些高级工具类,如`MpmcArrayQueue`、`MpscChunkedArrayQueue`等。 - **如何在项目中引入JCTools:** ...
以上只是Java中部分设计模式的简介,实际编程中,开发者需要根据具体需求选择合适的设计模式,灵活运用,以实现高效、可扩展的软件系统。设计模式的学习和掌握是每个Java程序员进阶道路上不可或缺的一部分。
【Java 8与NetBeans简介】 Java 8是Oracle公司发布的一个重要版本,它引入了大量新特性,如Lambda表达式、Stream API、日期时间API、默认方法等,极大地提升了Java语言的简洁性和功能性。Lambda表达式使得匿名函数...
1. **高并发简介**:高并发是指系统在同一时间处理大量请求的能力,这是互联网服务必须面对的挑战。 2. **负载均衡**:通过负载均衡技术,如Nginx、HAProxy,将请求分发到不同的服务器,避免单点压力过大。 3. **...
1. **CountDownLatch简介** CountDownLatch是一个计数器,初始化时设置一个初始值,然后多个线程可以等待这个计数器归零。一旦计数器归零,所有等待的线程都将被释放,可以继续执行。通常用于确保所有线程都完成...