java原子整数_多线程(四、原子类-AtomicInteger)
案例
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)相关推荐
- java原子变量的作用_AtomicInteger原子类的作用介绍(代码示例)
本篇文章给大家带来的内容是关于AtomicInteger原子类的作用介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. AtomicInteger 原子类的作用 多线程操 ...
- 第四章Java核心类库_多线程
第四章第五节Java核心类库_多线程 多线程 一.线程与进程 1.线程与进程 2.线程调度 二.同步与异步&并发与并行 1. 同步与异步 2. 并发与并行 三.继承Thread 1.代码块 2 ...
- java原子类场景,CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?,原子共面问题...
CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?,原子共面问题(1)CAS是什么? 比较并交换 举例1, CAS产生场景代码? importjava.util.concurrent ...
- 源码学习【原子类AtomicInteger】Java原子类底层实现(解释详细)
原子类AtomicInteger 在Java中,有很多方法可以保证多线程下数据的安全,AtomicXXXX这些类就是其中的一种,原子类,可以保证每一步操作都是原子操作.这次就对AtomicIntege ...
- 6.juc包下的原子类AtomicInteger,AtomicLong等AtomicXXX介绍
在介绍juc中的原子类之前,先看看官方文档对java.util.concurrent.atomic包的介绍官方文档地址这里截取翻译之后的部分描述 1. 支持对单个变量进行无锁线程安全编程 2. 类的 ...
- java integer 不变模式_多线程编程的设计模式 不变模式(zt)
因为字符串类是不变模式最典型的代表,所以其它的知识将在下面继续介绍. 多线程编程的设计模式 不变模式(二) 不变模式(Immutable Pattern)顾名思义,它的状态在它的生命周期内是永恒的(晕 ...
- java swing事件_第四节 Java Swing事件处理
第四节:事件处理 一个图形界面完的成只是程序开发中起步的工作,因为要想让每一个组件都发挥其作用,就必须对所有的组件进行事件处理.那么什么是事件处理,所谓事件就表示一个对象发生状态变化.例如,每当按下一 ...
- java 线程 并发_多线程高并发编程总结
多线程 第一章 一.终止线程的三种方法: 1.使用退出标志,是县城正常退出,也就是当run方法完成后线程终止. 2.stop不推荐 3.使用interrupt(打了一个停止标记,并不是真的停止线程). ...
- java存储整数_关于数组:Java:存储大量整数的最佳数据类型是什么?
我必须处理大量的小整数,最大为1700万(值始终在0-255之间),并将它们存储在某种类型的数组上,我目前使用的是普通的int数组,并且性能不是最好的( 符合预期). 每次执行时,程序都会访问该数组的 ...
最新文章
- Java 的 JSP 已经被淘汰了吗?
- Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
- caffe linux 教程,Caffe 深度学习入门教程 - 安装配置Ubuntu14.04+CUDA7.5+Caffe+cuDNN_Linux教程_Linux公社-Linux系统门户网站...
- python查看图像通道数(通过PIL)
- 远程调用——hessian使用入门
- 用C++ Builder对图像进行特殊效果处理
- 系统集成项目管理工程师计算题(案例计算题、挣值分析、EAC、ETC)
- html5用户注册页面代码,HTML5注册页面示例代码
- ORA-39194: Table mode jobs require the tables to be comma separated.
- 密码学常用工具,作图
- 微信小程序-音乐播放器总结
- 云信IM服务端API调用(THINKPHP版)
- 详解统计套利交易系统模型
- 无悔追梦人 追梦五年
- AI 测温、无人机喊话、机器人防疫,科技抗疫超硬核!
- 《神秘的程序员们》年度抽奖活动 开奖了
- 手机充值了还是显示无服务器,手机显示已联网,但却不能用,怎么办?
- 为什么渗透提权这么难
- jooq从入门到精通(一)
- Redis数据类型汇总
热门文章
- git push -u origin master和git push 远程主机名 本地分支名:远程分支名作用
- 查看大日志文件的专门工具logviewer
- Linux CentOS 6.8 安装 Docker
- 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)V2.0_dev
- java镂空图案,我想打印镂空的菱形
- 51php 数据不同步,php避免循环查询数据库优化一对多查询
- mysql5.7是测试版本吗_mysql免安装版本测试(mysql-5.7.18-winx64)
- android 底部滑动效果怎么做,Android实现简单底部导航栏 Android仿微信滑动切换效果...
- mysql 全文索引 权重_MySQL中的全文索引
- php写linux应用程序,Linux应用程序使用写文件调试程序的方法