`

多线程之AtomicInteger

    博客分类:
  • java
阅读更多

 

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值在多线程下递增操作的测试

    主要介绍了Java中对AtomicInteger和int值在多线程下递增操作的测试,本文得出AtomicInteger操作 与 int操作的效率大致相差在50-80倍上下的结论,需要的朋友可以参考下

    java多线程自增效率比较及原理解析

    在多线程环境下,对于自增操作需要考虑线程安全问题,常见的解决方法包括使用synchronized关键字、AtomicInteger、LongAdder和LongAccumulator等。本文给出了使用这些方法实现自增的代码演示,并通过多线程测试比较...

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

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

    JUC多线程学习个人笔记

    JUC(Java Util Concurrent)是Java中用于并发编程的工具包,提供了一组接口和类,用于处理多线程和并发操作。JUC提供了一些常用的并发编程模式和工具,如线程池、并发集合、原子操作等。 JUC的主要特点包括: ...

    Java多线程大量调用百度地图的搜索功能,来做课程作业数据准备

    Java多线程大量调用百度地图的搜索功能,来做课程作业数据准备 读取xls 采用了apache.poi,说实话,使用体验上来说肯定没有python的pandas还用, 多线程共享资源 主要共享的就是一个sheet对象和访问列标row_number...

    Java并发编程相关源码集 包括多任务线程,线程池等.rar

     volatile关键字的非原子性、volatile关键字的使用、AtomicInteger原子性操作、线程安全小例子:多个线程竞争问题、多个线程多个锁问题、创建一个缓存的线程池、多线程使用Vector或者HashTable的示例(简单线程同步...

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

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

    线程基础,线程池,生命周期

    线程基础,线程池,生命周期

    ThreadTest:多线程

    多线程 第4章-多线程 Синхронные и асинхронные операции Синхронизация ресурсов - блок кода "synchronized" Низкоуровневые бло...

    Java多线程atomic包介绍及使用方法

    主要介绍了Java多线程atomic包介绍及使用方法,涉及原子更新基本类型介绍及代码示例,具有一定参考价值,需要的朋友可以了解下。

    汪文君高并发编程实战视频资源全集

     高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4  高...

    汪文君高并发编程实战视频资源下载.txt

     高并发编程第三阶段01讲 AtomicInteger多线程下测试讲解.mkv  高并发编程第三阶段02讲 AtomicInteger API详解,以及CAS算法详细介绍.mkv  高并发编程第三阶段03讲 利用CAS构造一个TryLock自定义显式锁.mp4  高...

    java编发编程:JUC综合讲解

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

    基于Java+MySQL设计与实现的秒杀与抢购模型架构【100013279】

    对高并发高负载情形下的应用场景进行分析,以高效地处理资源竞争为目的,设计一个秒杀与抢购模型。...第二种方案的响应时间最慢,原因是高并发情形下多个线程不断回滚,耗费了大量的CPU资源,导致性能低下。

    java面试常见基础(深层次,高级研发)

    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:乐观锁,悲观锁。 概述:所谓的原子性是指在一次操作或者...

    filesync_server

    CE KT SS 2018 Filesync Java后端服务器我们使用作为...&gt;显然是用于高性能,线程安全的数据和对象交换的不错的类。 可能需要进行更多研究,因为明确提到使用此功能可以构建主要的非阻塞数据结构-某种程度上违背了目的。

    java核心知识点整理.pdf

    线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 .........................

    JAVA核心知识点整理(有效)

    2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 .....................

Global site tag (gtag.js) - Google Analytics