竟态条件 racing condition

多个线程读时,线程是安全的。
当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。
我的理解,竞态条件就是一种情况。

代码示例

假设有 A、B 两个线程,调用 add 方法分别传入 1 和 2,理想条件下结果应该是 3。
现在出现了不安全的情况,有可能结果不对。
add 方法就是临界区count 就是同一资源。

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

其实这样一看,说白了,就是要严格控制线程的执行顺序,假设是按A、B的顺序执行来讲,B依赖于A先执行完成,B再执行结果才是正确的,中间不能出现问题,否则如果,中间交叉执行,就有可能发生了竞态条件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获。由于个人水平有限,不对之处还望...
    Steven_cao阅读 5,881评论 1 7
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 9,149评论 0 11
  • 1.解决信号量丢失和假唤醒 public class MyWaitNotify3{ MonitorObject m...
    Q罗阅读 4,444评论 0 1
  • 一.线程安全性 线程安全是建立在对于对象状态访问操作进行管理,特别是对共享的与可变的状态的访问 解释下上面的话: ...
    黄大大吃不胖阅读 4,336评论 0 3
  • 如同英雄迟暮 桥梁不甘地垂下头颅 千载的风雨也摧折不了的坚毅 坍塌在这软弱又贪婪的人心里 咆哮的机器又给了猛烈的一...
    有兔茕茕阅读 890评论 15 7