java 原子量_JAVA线程10 – 新特性:原子量

  • Post author:
  • Post category:java


一、原子量简介

原子量就是操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。 原子量虽然可以保证单个变量在某一个操作过程的安全,但无法保证你整个代码块,或者整个程序的安全性。因此,通常还应该使用锁等同步机制来控制整个程序的安全性。

二、原子量的作用 多个线程对单个变量操作也会引起一些问题。在Java5之前,可以通过volatile、synchronized关键字来解决并发访问的安全问题,但这样太麻烦。

Java5之后,专门提供了用来进行单变量多线程并发安全访问的工具包java.util.concurrent.atomic。

三、使用示例

AtomicRunnable.java

public class AtomicRunnable implements Runnable {

private static AtomicInteger amount = new AtomicInteger(1000); // 原子量,每个线程都可以自由操作

private Integer num;

AtomicRunnable(Integer num) {

this.num = num;

}

public void run() {

synchronized(AtomicRunnable.class){

Integer result = amount.addAndGet(num);

System.out.println(Thread.currentThread().getName()+”使用” + num + “更新了总数,当前总数为:” + result);

}

}

}

AtomicTest.java

public class AtomicTest {

public static void main(String[] args) throws InterruptedException {

Runnable r1 = new AtomicRunnable(10);

Runnable r2 = new AtomicRunnable(20);

Runnable r3 = new AtomicRunnable(30);

Runnable r4 = new AtomicRunnable(40);

Runnable r5 = new AtomicRunnable(50);

Runnable r6 = new AtomicRunnable(60);

Thread t1 = new Thread(r1);

Thread t2 = new Thread(r2);

Thread t3 = new Thread(r3);

Thread t4 = new Thread(r4);

Thread t5 = new Thread(r5);

Thread t6 = new Thread(r6);

t1.start();

t2.start();

t3.start();

t4.start();

t5.start();

t6.start();

}

}



版权声明:本文为weixin_39940344原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。