`

多线程之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多线程之赛马程序实验8多线程练习下载进度

    本实验"java多线程之赛马程序实验8多线程练习下载进度"聚焦于如何利用多线程来模拟实际场景中的下载进度显示。在这一过程中,我们将探讨Thread类的`run`和`start`方法,以及如何通过进度条来可视化表示下载过程。 ...

    多线程并行执行,汇总结果

    Java提供了多种线程安全的集合,如`ConcurrentHashMap`、`AtomicInteger`等,它们在多线程环境下能够保证数据的一致性和完整性。线程可以在执行过程中将计算结果放入这些线程安全的数据结构,而无需担心数据竞争的...

    java 多线程编程实战指南(核心 + 设计模式 完整版)

    《Java多线程编程实战指南》这本书深入浅出地讲解了Java多线程的核心概念和实战技巧,分为核心篇和设计模式篇,旨在帮助开发者掌握并应用多线程技术。 1. **线程基础** - **线程的创建**:Java提供了两种创建线程...

    Java中对AtomicInteger和int值在多线程下递增操作的测试

    相比之下,普通的`int`变量在多线程环境下进行修改时,如果不采取额外的同步措施(如`synchronized`关键字或`Lock`对象),可能会导致数据不一致。这是因为每个线程都有自己的工作内存,它们可能在自己的工作内存中...

    多线程demo/java多线程练习

    - **Atomic类**:提供了一组原子操作,如`AtomicInteger`,在多线程环境下保证了更新操作的原子性。 5. **死锁与活锁** - **死锁**:两个或更多线程相互等待对方释放资源,形成无法解套的循环等待,项目中可能...

    【JAVA多线程】多线程编程核心技术学习资料

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程技术尤其关键,因为它们能够充分利用多核处理器的能力。这份"Java多线程编程...

    java多线程设计

    5. 原子操作(Atomic):AtomicInteger、AtomicLong等原子类提供了无锁编程的支持,保证了在多线程环境下的原子性操作。 总结,Java多线程设计是构建高性能、高并发应用的基础。通过理解并合理使用不可变对象,我们...

    java多线程简单下载器

    【Java多线程简单下载器】是一个初学者的编程作业,虽然代码可能较为混乱,但其核心功能已经实现,即通过多线程技术进行文件的下载。在Java中,多线程是并发处理的重要手段,它允许多个任务在同一时间执行,从而提高...

    Java多线程详解及示例

    原子性操作(如AtomicInteger)则可以保证在多线程环境下的原子性。 6. 线程中断与守护线程 Thread类提供了interrupt()方法用于中断线程,但需要注意的是,这并不意味着线程会立即停止,而是在线程检查到中断标志后...

    简单多线程实例简单多线程实例简单多线程实例

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在资源丰富的现代计算机系统中。本文将深入探讨“简单多线程实例”,旨在帮助你理解并掌握如何在实际项目中运用多线程。 多线程是指在一个程序内同时运行多...

    Java多线程编程核心技术_完整版_java_

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本教程《Java多线程编程核心技术》将...

    多线程计算器

    7. **线程安全的数据结构**:某些数据结构如ConcurrentHashMap、AtomicInteger等是线程安全的,它们在设计上就考虑了多线程环境下的并发访问。 8. **死锁与竞态条件**:多线程环境下,必须预防死锁(多个线程互相...

    多线程原理详解

    在Java编程语言中,多线程是实现并发执行任务的关键技术。它允许程序同时执行多个独立的任务,从而提高系统的效率和响应性。本篇将深入探讨多线程的原理及其在Java中的应用。 首先,我们需要理解什么是线程。线程是...

    Java多线程小结

    ### Java多线程小结 #### 一、多线程的概念与意义 多线程是Java编程中的一个重要概念,指的是程序在运行时可以同时执行多个线程的能力。它能够提高程序的性能,尤其是在多核处理器的环境下。多线程使得程序能够更...

    java多线程编程

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本教程将深入探讨Java多线程的各个方面...

    java多线程下载图片

    在Java编程中,多线程是一项关键技能,尤其在处理大量并发操作时,如下载图片。多线程允许我们同时执行多个任务,提高程序效率,减轻主线程的压力,避免阻塞用户界面。在这个场景中,"java多线程下载图片"意味着我们...

    java多线程编程(第二版)

    Java多线程编程是Java开发中的重要组成部分,尤其在当今并发处理需求日益增长的时代,对多线程的理解和掌握显得尤为重要。《Java多线程编程(第二版)》这本书深入探讨了这一主题,旨在帮助开发者更好地理解和应用...

    多线程面试题

    在计算机科学中,多线程是一种允许一个进程同时执行多个线程的技术,目的是为了提高程序的执行效率。多线程面试题往往会围绕线程的概念、特性、线程安全、锁机制以及多线程编程中可能遇到的问题和解决方案进行提问。...

    Java多线程设计模式(带源码)

    7. 原子操作模式:使用`java.util.concurrent.atomic`包中的原子类,如`AtomicInteger`、`AtomicLong`等,实现非阻塞的原子操作,提升多线程环境下的性能。 8. 轻量级锁定模式:Java 5引入了`java.util.concurrent....

    java 银行系统多线程

    1. **多线程基础**:多线程是Java的重要特性之一,它允许程序同时执行多个任务。在Java中,我们可以通过继承`Thread`类或实现`Runnable`接口来创建线程。线程的创建、启动、同步和控制是多线程编程的基础。 2. **...

Global site tag (gtag.js) - Google Analytics