博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java:多线程,java.util.concurrent.atomic包之AtomicInteger/AtomicLong用法
阅读量:6472 次
发布时间:2019-06-23

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

1. 背景

java.util.concurrent.atomic这个包是非常实用,解决了我们以前自己写一个同步方法来实现类似于自增长字段的问题。

在Java语言中,增量操作符(++)不是原子的,也就是非线程安全的;在使用的时候,要保证数据同步,就需要使用类似于synchronized关键字等手段来保证数据正确。正因为如此,《》一文中用synchronized关键字来实现一个自增长的字段。

2. 实现代码

如今使用java.util.concurrent.atomic包,问题简单多了。示范代码如下(没有synchronized关键字,没有Lock锁):

package com.clzhang.sample.thread;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicLong;public class SimpleTest implements Runnable {    // 创建AtomicInteger,初始值0(也可以指定初始值)//    private static final AtomicInteger nextSerialNum = new AtomicInteger();    private static final AtomicLong nextSerialNum = new AtomicLong();    @Override    public void run() {                // 直接取得当前值并增长1        System.out                .println(Thread.currentThread().getName() + ":" + nextSerialNum.getAndIncrement());        try {            Thread.sleep(100);        } catch (InterruptedException e) {        }    }    public static void main(String[] args) {        SimpleTest st = new SimpleTest();        for (int i = 0; i < 100; i++) {            new Thread(st, "Thread" + i).start();        }    }}

部分输出:

Thread92:60
Thread94:59
Thread95:58
Thread90:57
Thread88:56
Thread93:55

转载地址:http://gxpko.baihongyu.com/

你可能感兴趣的文章
graph-tool文档(一)- 快速开始使用Graph-tool - 2.属性映射、图的IO和Price网络
查看>>
graph-tool 练习
查看>>
easyui treegrid逐步加载
查看>>
GraphicsLab Project之辉光(Glare,Glow)效果 【转】
查看>>
<转>Python: __init__.py 用法
查看>>
Linux Curl命令
查看>>
046 SparlSQL中的函数
查看>>
Zookeeper 的 Lua 绑定(二)
查看>>
-27979 LoadRunner 错误27979 找不到请求表单 Action.c(73): Error -27979: Requested form not found...
查看>>
[LeetCode] Minimum Depth of Binary Tree
查看>>
,net运行框架
查看>>
Java 中 Emoji 的正则表达式
查看>>
Mixin Network第一届开发者大赛作品介绍- dodice, diceos和Fox.one luckycoin
查看>>
安卓Glide(4.7.1)使用笔记 01 - 引入项目
查看>>
AndroidNote
查看>>
中金易云:为出版社找到下一本《解忧杂货店》
查看>>
Flex布局
查看>>
Material Design之 AppbarLayout 开发实践总结
查看>>
Android中的SurfaceView详解
查看>>
Flutter之MaterialApp使用详解
查看>>