案例

10个线程并发累加一个整数,每个线程累加1000,保证线程安全

Unsafe类,来源于sun.misc包。该类封装了许多类似指针操作,可以直接进行内存管理、操纵对象、阻塞/唤醒线程等操作。

package com.jane;

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.atomic.AtomicInteger;

public class Main {

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

AtomicInteger ai = new AtomicInteger();

List list = new ArrayList<>();

for (int i = 0; i < 10; i++) {

Thread t = new Thread(new Accumlator(ai), "thread-" + i);

list.add(t);

t.start();

}

for (Thread t : list) {

t.join();

}

System.out.println(ai);

}

static class Accumlator implements Runnable {

private AtomicInteger ai;

Accumlator(AtomicInteger ai) {

this.ai = ai;

}

@Override

public void run() {

for (int i = 0, len = 1000; i < len; i++) {

ai.incrementAndGet();

}

}

}

}

运行结果

java原子整数_多线程(四、原子类-AtomicInteger)相关推荐

  1. java原子变量的作用_AtomicInteger原子类的作用介绍(代码示例)

    本篇文章给大家带来的内容是关于AtomicInteger原子类的作用介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. AtomicInteger 原子类的作用 多线程操 ...

  2. 第四章Java核心类库_多线程

    第四章第五节Java核心类库_多线程 多线程 一.线程与进程 1.线程与进程 2.线程调度 二.同步与异步&并发与并行 1. 同步与异步 2. 并发与并行 三.继承Thread 1.代码块 2 ...

  3. java原子类场景,CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?,原子共面问题...

    CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?,原子共面问题(1)CAS是什么? 比较并交换 举例1,  CAS产生场景代码? importjava.util.concurrent ...

  4. 源码学习【原子类AtomicInteger】Java原子类底层实现(解释详细)

    原子类AtomicInteger 在Java中,有很多方法可以保证多线程下数据的安全,AtomicXXXX这些类就是其中的一种,原子类,可以保证每一步操作都是原子操作.这次就对AtomicIntege ...

  5. 6.juc包下的原子类AtomicInteger,AtomicLong等AtomicXXX介绍

     在介绍juc中的原子类之前,先看看官方文档对java.util.concurrent.atomic包的介绍官方文档地址这里截取翻译之后的部分描述 1. 支持对单个变量进行无锁线程安全编程 2. 类的 ...

  6. java integer 不变模式_多线程编程的设计模式 不变模式(zt)

    因为字符串类是不变模式最典型的代表,所以其它的知识将在下面继续介绍. 多线程编程的设计模式 不变模式(二) 不变模式(Immutable Pattern)顾名思义,它的状态在它的生命周期内是永恒的(晕 ...

  7. java swing事件_第四节 Java Swing事件处理

    第四节:事件处理 一个图形界面完的成只是程序开发中起步的工作,因为要想让每一个组件都发挥其作用,就必须对所有的组件进行事件处理.那么什么是事件处理,所谓事件就表示一个对象发生状态变化.例如,每当按下一 ...

  8. java 线程 并发_多线程高并发编程总结

    多线程 第一章 一.终止线程的三种方法: 1.使用退出标志,是县城正常退出,也就是当run方法完成后线程终止. 2.stop不推荐 3.使用interrupt(打了一个停止标记,并不是真的停止线程). ...

  9. java存储整数_关于数组:Java:存储大量整数的最佳数据类型是什么?

    我必须处理大量的小整数,最大为1700万(值始终在0-255之间),并将它们存储在某种类型的数组上,我目前使用的是普通的int数组,并且性能不是最好的( 符合预期). 每次执行时,程序都会访问该数组的 ...

最新文章

  1. Java 的 JSP 已经被淘汰了吗?
  2. Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
  3. caffe linux 教程,Caffe 深度学习入门教程 - 安装配置Ubuntu14.04+CUDA7.5+Caffe+cuDNN_Linux教程_Linux公社-Linux系统门户网站...
  4. python查看图像通道数(通过PIL)
  5. 远程调用——hessian使用入门
  6. 用C++ Builder对图像进行特殊效果处理
  7. 系统集成项目管理工程师计算题(案例计算题、挣值分析、EAC、ETC)
  8. html5用户注册页面代码,HTML5注册页面示例代码
  9. ORA-39194: Table mode jobs require the tables to be comma separated.
  10. 密码学常用工具,作图
  11. 微信小程序-音乐播放器总结
  12. 云信IM服务端API调用(THINKPHP版)
  13. 详解统计套利交易系统模型
  14. 无悔追梦人 追梦五年
  15. AI 测温、无人机喊话、机器人防疫,科技抗疫超硬核!
  16. 《神秘的程序员们》年度抽奖活动 开奖了
  17. 手机充值了还是显示无服务器,手机显示已联网,但却不能用,怎么办?
  18. 为什么渗透提权这么难
  19. jooq从入门到精通(一)
  20. Redis数据类型汇总

热门文章

  1. git push -u origin master和git push 远程主机名 本地分支名:远程分支名作用
  2. 查看大日志文件的专门工具logviewer
  3. Linux CentOS 6.8 安装 Docker
  4. 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev
  5. java镂空图案,我想打印镂空的菱形
  6. 51php 数据不同步,php避免循环查询数据库优化一对多查询
  7. mysql5.7是测试版本吗_mysql免安装版本测试(mysql-5.7.18-winx64)
  8. android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
  9. mysql 全文索引 权重_MySQL中的全文索引
  10. php写linux应用程序,Linux应用程序使用写文件调试程序的方法