博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA线程10 - 新特性:原子量
阅读量:6567 次
发布时间:2019-06-24

本文共 1516 字,大约阅读时间需要 5 分钟。

hot3.png

一、原子量简介

原子量就是操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。

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

二、原子量的作用

多个线程对单个变量操作也会引起一些问题。在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();    }}

转载于:https://my.oschina.net/hongdengyan/blog/204813

你可能感兴趣的文章
外包 银行数字签名U盘的用法
查看>>
我的友情链接
查看>>
Linux快捷键-命令行下
查看>>
java.util.ConcurrentModificationException
查看>>
Oracle中TO_DATE格式
查看>>
phpmyadmin error:#2002 - 服务器没有响应
查看>>
我的友情链接
查看>>
socket的三次握手
查看>>
Linux使用Nginx搭建图片服务器
查看>>
数据库分页大全
查看>>
mkfs.ext4 /dev/sdb 与 mkfs.ext4 /dev/sdb1
查看>>
Android 实用工具Hierarchy Viewer实战
查看>>
Wireshark抓包工具使用教程以及常用抓包规则
查看>>
体绘制(Volume Rendering)概述介绍
查看>>
Java模式(适配器模式)
查看>>
TimerHandler的简单应用
查看>>
swift:使用协议protocol设置颜色,UIImage的切圆角ImageWithCornerRadius
查看>>
来一场说聊就聊的压测分享
查看>>
如何兼容並蓄Android Studio 與 Eclipse 的優點, 減少顧此失彼的缺憾
查看>>
配置scp在Linux或Unix之间传输文件无需密码
查看>>