java 原子量_Java线程:原子量
访问对2个或2个以上的atomic变量(或者对单个atomic变量进行2次或2次以上的操作)通常认为是需要同步的,以达到让这些操作能被作为一个原子
package com.thread.atomic;
import java.util.concurrent.atomic.AtomicLong;
/**
* 原子性
*/
import java.util.concurrent.locks.Lock;
public class MyCount extends Thread{
private static AtomicLong cash = new AtomicLong(1000); // 账户余额
private Lock lock ;//不公平锁
private int x;
private String name;
MyCount(Lock lock, String name, int x) {
this.lock = lock;
this.x = x;
this.name = name;
}
@Override
public void run() {
lock.lock();
cash.addAndGet(x);
System.out.println(name + "执行了 " + x + ",当前余额:" + cash.get());
lock.unlock();
}
}
package com.thread.atomic;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class TestAtomic {
private Lock lock = new ReentrantLock(false);//不公平锁
public void run() {
ExecutorService pool = Executors.newCachedThreadPool();
MyCount c1 = new MyCount(lock, "张三", 100);
MyCount c2 = new MyCount(lock, "郭树", -200);
MyCount c3 = new MyCount(lock, "张总", 400);
MyCount c4 = new MyCount(lock, "胖子", -100);
MyCount c5 = new MyCount(lock, "小李", -100);
MyCount c6 = new MyCount(lock, "校长", 400);
MyCount c7 = new MyCount(lock, "王总", -500);
pool.execute(c1);
pool.execute(c2);
pool.execute(c3);
pool.execute(c4);
pool.execute(c5);
pool.execute(c6);
pool.execute(c7);
pool.shutdownNow();
}
public static void main(String[] args) {
new TestAtomic().run();
}
}
java 原子量_Java线程:原子量相关推荐
- java异常_Java线程池「异常处理」正确姿势:有病就得治
假设我们有一个线程池,由于程序需要,我们向该线程池中提交了好多好多任务,但是 这些任务都没有对异常进行try catch处理,并且运行的时候都抛出了异常 .这会对线程池的运行带来什么影响? 正确答案是 ...
- java堆栈_java线程的堆栈跟踪之jstack篇
该命令打印java线程的堆栈跟踪,可以得知哪些线程被阻塞或正等待,以便于查找如线程死锁的原因 用法: jstack [ option ] pid jstack [ option ] executabl ...
- java 原子量_JAVA线程10 - 新特性:原子量
一.原子量简介 原子量就是操作变量的操作是"原子的",该操作不可再分,因此是线程安全的. 原子量虽然可以保证单个变量在某一个操作过程的安全,但无法保证你整个代码块,或者整个程序的安 ...
- future java 原理_Java线程池FutureTask实现原理详解
前言 线程池可以并发执行多个任务,有些时候,我们可能想要跟踪任务的执行结果,甚至在一定时间内,如果任务没有执行完成,我们可能还想要取消任务的执行,为了支持这一特性,ThreadPoolExecutor ...
- JAVA 海啸_java线程总结
首先要理解线程首先需要了解一些基本的东西,我们现在所使用的大多数操作系统都属于多任务,分时操作系统.正是由于这种操作系统的出现才有了多线程这个概念.我们使用的windows,linux就属于此列.什么 ...
- 线程java作用_java线程介绍(原创)
文章讲解要点 1.线程创建几种方式 2.线程常见设置方法,包括优先级.优先级休眠.停止等 3.多线程间的数据交互与锁机制 4.项目源码下载 线程介绍.png 一.线程创建方式 常见的线程创建方法以下三 ...
- java实例_Java线程方式及实例
简介 线程创建方式由继承Thread类,实现Runnable接口,实现Callable接口通过FutureTask包装,通过线程池来创建,所以本文主要介绍Java线程方式. 继承Thread类 Thr ...
- java看山不是山_java线程启动原理分析
一.前言 不知道哪位古人说:人生三大境界.第一境界是:看山是山看水是水:第二境界是看山不是山看水不是水:第三境界:看山还是山看水还是水. 其实我想对于任何一门技术的学习都是这样. 形而上下者为之器,形 ...
- java 活锁_Java线程活锁
活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的"活", 而处于死锁的实体表现为等待. 活锁有可能自行解开,死锁则不能. package com.what21.thr ...
- 简述java的线程_JAVA线程简述
一.先谈谈并行与并发: 并行:是指两个或多个事件在同一时刻发生. 并发:是指连个或多个事件在同一时间间隔内发生. 二.接下来我们进入正题,讨论一下线程和进程: 1)什么是线程和进程? 进程:是一个具有 ...
最新文章
- NMAP分布式扫描工具dnmap
- python办公自动化excel_简直出神入化,教你用Python控制Excel实现自动化办公
- ios开发 静音键设置_iOS开发,改变系统铃声音量和静音,并非媒体播放音量
- 用Maven构建Mahout项目
- leetcode 1047. Remove All Adjacent Duplicates In String | 1047. 删除字符串中的所有相邻重复项(Java)
- 求矩阵中各列数字的和 Exercise08_01
- java activiti jbpm_activiti和jbpm工作流引擎哪个比较好?
- 0424-学习进度条
- 【Android】attr、style和theme
- .net跨防火墙链接oracle连接池链接长时间无通讯数据被断开后报错问题解决
- 反向工程解析QQ扫码登录的OAuth2流程
- ERROR 1130: Host ’...′ is not allowed to connect to this MySQL server
- iOS下载文件,保存路径. 防止加到iCloud备份
- 所谓国产机:别的LINUX,要么无法安装,要么安装了跑不起来
- lnmp一键安装包 mysql_lnmp一键安装包搭建lnmp环境
- python里hist_python matplotlib模块: hist(直方图)
- C++中#define宏定义的min与max函数
- 【CSDN竞赛第五期】“三而竭”采用等比求和公式法的思考
- css打印适应纸张_使用原生css+js+html实现打印A4纸张的功能页面
- LoadRunner测试工具大全下载,破解,licence
热门文章
- Microsoft Windows Server 2008 R2官方原版(MSDN版)下载
- ThinkPad T61 X61安装XP系统的方法及xp驅動下載
- 深度解读互联网+供应链金融八大模式
- gre词汇精选最新版
- Jetson nano : PWM风扇调速。
- 日骗上百的淘宝网赚项目骗局
- FPS游戏的方框透视+自瞄原理
- **恶意代码系列** MS-DOS系统安装
- FPGA零基础学习:SPI 协议驱动设计
- 通信专业顶刊_通信类期刊排名_2016通信期刊排名_2016通信前沿新技术