import java.util.concurrent.atomic.AtomicInteger;
public class TestAtomicInteger {
static AtomicInteger ai = new AtomicInteger(0);
static int i=0;
public static void main(String[] args) {
testAtomic();
testNormal();
}
static void testAtomic(){
Thread th1 = new Thread(new Runnable(){
@Override
public void run() {
for(int j=0;j<10000;j++){
ai.addAndGet(1);
}
}
});
Thread th2 = new Thread(new Runnable(){
@Override
public void run() {
for(int j=0;j<10000;j++){
ai.addAndGet(1);
}
}
});
th1.start();
th2.start();
try {
th1.join();
th2.join();
System.out.println("atomic ====="+ai.get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//thread1 i===12538
//thread2 i===16119
static void testNormal(){
Thread th1 = new Thread(new Runnable(){
@Override
public void run() {
for(int j=0;j<10000;j++){
i++;
}
}
});
Thread th2 = new Thread(new Runnable(){
@Override
public void run() {
for(int j=0;j<10000;j++){
i++;
}
}
});
th1.start();
th2.start();
try {
th1.join();
th2.join();
System.out.println("thread i===" + i);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关推荐
#### 第三阶段:实战案例分析 ##### 1. 系统架构设计原则 - **水平扩展**:通过增加服务器数量来提升整体处理能力。 - **垂直扩展**:升级单台服务器硬件配置。 - **微服务架构**:将复杂系统拆分成多个独立部署的...
高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv 高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4 高...
- **并发测试**:如何设计和执行并发测试,以确保代码在多线程环境下的正确性。 通过阅读《Java并发编程实战》,读者将掌握Java并发编程的理论知识,了解各种并发控制机制,并学会如何在实际项目中运用这些知识,...
高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv 高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv 高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4 高...
### Java 7并发编程实战手册知识点总结 #### 一、并发编程基础 1. **并发与并行**:首先区分并发(Concurrent)与并行(Parallel)的概念。并发指的是多个任务可以同时进行,但实际上它们可能是在单个处理器上交替...
《实战Java高并发程序设计》是一本专注于Java并发编程实践的书籍,随书代码提供了大量示例,帮助读者深入理解并掌握在实际开发中如何处理高并发场景下的问题。本书的核心知识点涵盖了Java并发编程的基础理论、核心...
- **`CountDownLatch`、`CyclicBarrier`和`Semaphore`:** 分别解释这三个工具类的作用和使用场景,例如控制多个线程的同步启动、周期性的同步点设置以及对共享资源的访问控制。 **3. 锁机制深入解析** - **`...
7. **并发编程最佳实践**:如何避免活锁和饥饿,何时使用线程局部变量,如何正确地使用线程通信,以及如何进行并发测试和调试,都是并发编程实战中不可或缺的知识。 8. **Java内存模型**:理解Java内存模型(JMM)...
在《实战JAVA高并发程序设计—源代码》中,我们探讨的是如何利用Java语言来构建高效、稳定且可扩展的并发应用程序。这个资料包包含了丰富的源代码示例,旨在帮助开发者深入理解Java并发编程的核心概念和技术。以下是...
7. **原子变量类**:`java.util.concurrent.atomic`包下的原子变量类如`AtomicInteger`、`AtomicLong`等,提供了在无同步的情况下更新变量的方法,保证了更新操作的原子性。 8. **并发工具类**:`CountDownLatch`、...
7. 性能和测试:在使用并发时,性能优化和正确性测试是不容忽视的部分。本书可能会涵盖如何通过基准测试来评估并发代码的性能,以及如何使用测试框架进行单元测试和集成测试。 8. 异常处理:多线程环境中异常处理与...
在并发控制方面,`java.util.concurrent.atomic`包提供了原子变量类,如`AtomicInteger`、`AtomicLong`等,它们支持无锁编程,保证并发访问时的数据一致性。此外,`java.util.concurrent.locks`包中的`ReentrantLock...
在Java学习的过程中,SSM(Spring、SpringMVC、MyBatis)框架的实战项目是不可或缺的一部分,尤其在实现高并发场景下的秒杀API时,更需要深入理解这些技术的运用。本项目提供了详细的流程说明和学习笔记,帮助开发者...
9. **第九章:实战与性能调优** - 最后一章可能包括了实际并发编程中的最佳实践,性能测试和监控,以及如何根据系统需求进行性能调优。 以上只是基于常规并发编程书籍结构的猜测,具体内容还需要参考实际的电子书...
3. **原子变量(Atomic Variables)**:AtomicInteger、AtomicLong等类提供了无锁操作的原子性保证,适用于高并发场景下的简单计数器或更新操作。 4. **并发集合(Concurrent Collections)**:如ConcurrentHashMap...
9. **性能调优与并发测试**:介绍如何测量和分析并发程序的性能,以及如何进行并发测试,确保代码在多线程环境下的正确性和效率。 通过阅读《JAVA并发编程实践》,开发者可以掌握高级并发编程技巧,解决多线程环境...
8. **实战演练**:书中包含大量实战案例,让读者能够在实践中理解和掌握并发编程技巧。 9. **性能调优**:指导读者如何进行并发程序的性能测试和优化,如何避免常见的性能瓶颈,提升系统效率。 10. **错误与异常...
《CountDownLatch实战解析与源码探索》 CountDownLatch是Java并发编程中一个非常重要的同步工具类,它在多线程协作场景中起到了关键的作用。在`countdownlatch-example-sourcecode.zip`这个压缩包中,我们可以看到...