zoukankan      html  css  js  c++  java
  • 竞态条件和临界区

    竞态和临界区

    当多个线程写入相同资源的时候,可能会发生问题。但是,如果数据没有变化的话,多个线程读取相同资源倒是没有问题。
    下面有个例子,如果多个线程同时处理的话就会发生问题

    public class Counter {
    	
    	protected long count = 0;
    	
    	public void add(long value) {
    		this.count = this.count + value;
    	}
    }
    

    有可能出现两个线程通知执行了 Counter.add() 方法,这时候就会出现问题。这就是竞态。这个 add() 方法就是临界区。

    如何防止竞态

    有几个方法

    • 同步代码块(synchronization block)
    • locks
    • java.util.concurrent.atomic.AtomicInteger
  • 相关阅读:
    文件遍历
    小记——LocalFree与指针
    小记——遍历文件2
    数据库索引
    easyui验证
    JDBC事务
    ajax登录跳转实现
    dom解析xml
    kindeditor使用
    log4j的配置
  • 原文地址:https://www.cnblogs.com/okadanana/p/5894519.html
Copyright © 2011-2022 走看看