public class AtomicIntegerTest {
//原子操作:使用 AtomicInteger自增、自减 达到同步的效果
private AtomicInteger num = new AtomicInteger(0);
public static void main(String[] args) throws InterruptedException {
AtomicIntegerTest a = new AtomicIntegerTest();
for(int i=0;i<50;i++) {
a.newThread();
}
System.out.println(a.num.get());
}
void newThread() throws InterruptedException{
Thread t = new Thread(new T());
t.start();
t.join();
}
class T implements Runnable{
public void run() {
//int i = num.incrementAndGet(); //++i
int i = num.decrementAndGet(); //--i
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class AtomicLongTest {
//原子操作:使用 AtomicLong自增、自减 达到同步的效果
private AtomicLong num = new AtomicLong(0);
public static void main(String[] args) throws InterruptedException {
AtomicLongTest a = new AtomicLongTest();
for(int i=0;i<50;i++) {
a.newThread();
}
// System.out.println(a.num.get());
}
void newThread() throws InterruptedException{
Thread t = new Thread(new T());
t.start();
// t.join();
}
class T implements Runnable{
public void run() {
long i = num.incrementAndGet(); //++i
//long i = num.decrementAndGet(); //--i
System.out.println(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
相关推荐
主要介绍了Java中对AtomicInteger和int值在多线程下递增操作的测试,本文得出AtomicInteger操作 与 int操作的效率大致相差在50-80倍上下的结论,需要的朋友可以参考下
在多线程环境下,对于自增操作需要考虑线程安全问题,常见的解决方法包括使用synchronized关键字、AtomicInteger、LongAdder和LongAccumulator等。本文给出了使用这些方法实现自增的代码演示,并通过多线程测试比较...
java多线程安全性基础介绍 线程安全 正确性 什么是线程安全性 原子性 竞态条件 i++ 读i ++ 值写回i 可见性 JMM 由于cpu和内存加载速度的差距,在两者之间增加了多级缓存导致,内存并不能直接对cpu可见。 ...
JUC(Java Util Concurrent)是Java中用于并发编程的工具包,提供了一组接口和类,用于处理多线程和并发操作。JUC提供了一些常用的并发编程模式和工具,如线程池、并发集合、原子操作等。 JUC的主要特点包括: ...
Java多线程大量调用百度地图的搜索功能,来做课程作业数据准备 读取xls 采用了apache.poi,说实话,使用体验上来说肯定没有python的pandas还用, 多线程共享资源 主要共享的就是一个sheet对象和访问列标row_number...
volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小例子:多个线程竞争问题、多个线程多个锁问题、创建一个缓存的线程池、多线程使用Vector或者HashTable的示例(简单线程同步...
这个代码实现了一个简单的计数器,使用了Java的`AtomicInteger`类来保证多线程环境下的原子性操作。`AtomicInteger`是一个支持原子操作的整数类,它内部使用了CAS(Compare And Swap)算法来实现线程安全的操作。在...
线程基础,线程池,生命周期
多线程 第4章-多线程 Синхронные и асинхронные операции Синхронизация ресурсов - блок кода "synchronized" Низкоуровневые бло...
主要介绍了Java多线程atomic包介绍及使用方法,涉及原子更新基本类型介绍及代码示例,具有一定参考价值,需要的朋友可以了解下。
高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv 高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4 高...
高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv 高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4 高...
JUC(java.util.concurrent)库是 Java 标准库的一部分,提供了丰富的多线程并发工具,旨在帮助开发者编写高性能、高可伸缩性的并发程序。下面综合介绍 JUC 库的几个核心概念以及它们在并发编程中的重要性。 1. ...
对高并发高负载情形下的应用场景进行分析,以高效地处理资源竞争为目的,设计一个秒杀与抢购模型。...第二种方案的响应时间最慢,原因是高并发情形下多个线程不断回滚,耗费了大量的CPU资源,导致性能低下。
12.1. 多线程原子操作的安全性 31 13. Cas怎么实现unsafe? 32 13.1. Unsafe 32 13.2. CAS 32 13.3. 由CAS分析AtomicInteger原理 33 13.4. CAS的缺点 35 14. Map数据结构? 35 14.1. 一、定义 36 14.2. 二、构造函数...
文章目录引出问题(代码示例)问题原理说明问题解决方法1:使用锁机制方法2:原子类AtomicInteger原子类CAS机制实现线程安全概述源码分析CAS与Synchronized:乐观锁,悲观锁。 概述:所谓的原子性是指在一次操作或者...
CE KT SS 2018 Filesync Java后端服务器我们使用作为...>显然是用于高性能,线程安全的数据和对象交换的不错的类。 可能需要进行更多研究,因为明确提到使用此功能可以构建主要的非阻塞数据结构-某种程度上违背了目的。
线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 .........................
2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 .....................