thread_AtomicBoolean
Boolean值的变化的时候不允许在之间插入,保持操作的原子性
它提供了原子性操作,其中exists.compareAndSet(false, true)这个操作把比较和赋值操作组成了一个原子操作,
中间不会提供可乘之机.输出为
AtomicBoolean 高效并发处理 “只初始化一次”
可以让一个线程等待另一个线程完成任务后再执行:
public static void main(String[] args) {
Thread t2 = new Thread(new BarWorker("bb"));
Thread t1 = new Thread(new BarWorker("aa"));
t2.run();
t1.run();
} private static class BarWorker implements Runnable {
private static AtomicBoolean exists = new AtomicBoolean(false);
private String name; public BarWorker(String name) {
this.name = name;
} public void run() {
if (exists.compareAndSet(false, true)) {
// 当第一个线程设置为true后,另外的线程是进不来的
System.out.println(name + " enter" + "currentvalue=" + exists.get());
try {
System.out.println(name + " working");
Thread.sleep(2000);
} catch (InterruptedException e) {
// do nothing
}
System.out.println(name + " leave");
exists.set(false);
} else {
System.out.println(name + " give up");
}
}
}
thread_AtomicBoolean的更多相关文章
随机推荐
- css/js在线压缩工具
http://tool.css-js.com/ 在进行前端的时候,可以参考百度性能监控中心给出的意见: http://developer.baidu.com/apm/index
- 设置360调用样式 IE调用样式
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...
- cocos2dx 2.x 骨骼动画优化
本文原链接:http://www.cnblogs.com/zouzf/p/4450861.html 公司用的骨骼动画的版本貌似还停留在2.1之前的年代而已没有更新,该因各种历史原因吧,而有个大项目“一 ...
- [论文笔记] Methodologies for Data Quality Assessment and Improvement (ACM Comput.Surv, 2009) (2)
本篇博文主要对DMQ(S3.7)的分类进行了研读. 1. 这个章节提出了一种DQM的分类法(如下图) 由上图可见,该分类法的分类标准是对assessment & improvement阶段的支 ...
- WPF常用控件样式集锦
1.不规则形状按钮(通过更改path实现) <Style x:Key="ButtonStyleForPath" TargetType="{x:Type Button ...
- android 开发环境
http://blog.csdn.net/shulianghan/article/details/38023959
- Linux网络流量实时监控ifstat iftop命令详解
ifstat 介绍 ifstat工具是个网络接口监测工具,比较简单看网络流量 实例 默认使用 #ifstat eth0 eth1 KB /s i ...
- git clone简介
翻译整理自: http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-clone.html 在使用 ...
- 项目演化系列--验证体系(基于angular的前端验证)
前言 之前分享的<web项目演化--验证体系>中提到基于angular的验证,但是为了以防读者迷惑,能够好的理解验证体系,所以没有详细介绍. 今天特地补写一篇关于构建angular的验证. ...
- right-click an action, missing "Go to slot"
According to the tutorial,to connect the actions to slots, right-click an action and select Go to sl ...