首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
java面试题基础
冒泡排序算法
插入排序算法
归并排序算法
二叉树排序算法
基数排序
选择排序
堆排序
快排
TCP-三次握手
HTTP协议
WebSocket
Mysql架构
Innodb与Myisam数据库引擎
事务隔离级别
面向对象(OOP)
异常
泛型
Object
StringBuilder
代理
注解
java面试题基础二
HashMap
ConcurrentHashMap
BlockingQueue
线程
Volatile
AtomicInteger
Synchronized
Java虚拟机架构
类加载器
内存模型
垃圾回收
Mybatis面试题
IOC
高并发系统设计
分布式缓存
分布式锁
分布式事务
消息队列
当前位置:
首页>>
技术小册>>
Java面试指南
小册名称:Java面试指南
### Java中的AtomicInteger介绍 在Java中,AtomicInteger是一种线程安全的整数类型,它可以用来替代普通的整型变量,并且支持原子操作,即多个线程同时对它进行修改时也能保证结果正确。 AtomicInteger提供了一些原子操作方法,如getAndIncrement()、incrementAndGet()、getAndSet()等等,这些方法在多线程环境下都能够保证操作的原子性,从而避免了一些并发问题,例如死锁和数据丢失等。 下面是一个使用AtomicInteger的示例: ```java import java.util.concurrent.atomic.AtomicInteger; public class Counter { private AtomicInteger count = new AtomicInteger(0); public void increment() { count.getAndIncrement(); } public int getCount() { return count.get(); } } public class Main { public static void main(String[] args) { Counter counter = new Counter(); Thread t1 = new Thread(() -> { for (int i = 0; i < 10000; i++) { counter.increment(); } }); Thread t2 = new Thread(() -> { for (int i = 0; i < 10000; i++) { counter.increment(); } }); t1.start(); t2.start(); try { t1.join(); t2.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(counter.getCount()); } } ``` 在上面的代码中,我们创建了一个Counter类,其中使用了AtomicInteger类型的count变量来保证操作的原子性。我们创建了两个线程来分别对count变量进行10000次自增操作,并在主线程中等待两个线程执行完毕后输出count变量的值。 由于使用了AtomicInteger,我们可以确保每个线程都能够正确地自增count变量,并且最终输出的结果也是正确的。需要注意的是,AtomicInteger仅仅能保证单个变量的原子性,如果需要保证多个变量的原子性,需要使用其他的原子类型,例如AtomicLong、AtomicBoolean等等。
上一篇:
Volatile
下一篇:
Synchronized
该分类下的相关小册推荐:
java源码学习笔记
Mybatis合辑3-Mybatis动态SQL
Mybatis合辑1-Mybatis基础入门
Java必知必会-Maven高级
Java性能调优实战
Java高并发秒杀入门与实战
Mybatis合辑2-Mybatis映射文件
深入理解Java虚拟机
Java语言基础15-单元测试和日志技术
Java语言基础14-枚举和注解
Java并发编程实战
JAVA 函数式编程入门与实践