首页 > 代码库 > thread_AtomicBoolean
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="http://www.mamicode.com/+ 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。