美文网首页
竞态条件与临界区

竞态条件与临界区

作者: writeanewworld | 来源:发表于2018-10-15 11:33 被阅读0次

1.个人理解

就是两个或者多个线程同时共享一个资源的时候,对资源进行改动这类操作时,就会存在竞态条件。改动的那个方法就是竞态条件中的临界区。

2.示例

public class CompetiveCondition {
  //多线程中要知道他们共享的是什么,这里共享的是NotThreadSafe对象
public static void main(String[] args) {
    //公用实例
    NotThreadSafe instance = new NotThreadSafe();

    //主线程一
    MyRunnable myRunnable = new MyRunnable(instance);
    Thread thread = new Thread(myRunnable);
    thread.start();
    //主线程二
    new Thread(new MyRunnable(instance)).start();
    //主线程三
    new Thread(new MyRunnable(instance)).start();
}

}
class NotThreadSafe{
StringBuilder builder = new StringBuilder();
//竞态条件中的临界区
public void add(String text) { //synchronized
    this.builder.append(text);
    System.out.println(builder.toString());
}
}
class MyRunnable implements Runnable {
NotThreadSafe instance = null;

MyRunnable(NotThreadSafe instance){
    this.instance = instance;
}

public void run() {
    this.instance.add(" some text");    
}   
}

//上面起的两个线程中传入的是同一个方法主体实例,所以会产生竞态条件的. 方法就是临界区

//线程控制逃逸规则: 如果一个资源的创建,使用销毁都在同一个线程内完成,且永远不会脱离该线程的控制,则该资源的使用就是安全的。

相关文章

  • 竞态条件与临界区

    1.个人理解 2.示例 //上面起的两个线程中传入的是同一个方法主体实例,所以会产生竞态条件的. 方法就是临界区 ...

  • 1.2.2 线程安全之原子操作CAS

    竞态条件与临界区 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 临界区: incr 方法内...

  • 竞态条件和临界区

    当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竞态条件发生的代码区称作临界区。

  • 8.线程安全之原子性

    1.竞态条件与临界区 多个线程访问了相同的资源,向这些资源做了写操作时,对执行顺序有要求。 临界区:incr方法内...

  • 并发编程(四):线程安全解决方案-synchronized

    临界区 一段代码内如果存在对共享资源的多线程多写操作,称这段代码为临界区。 竞态条件 多个线程在临界区内执行,由于...

  • python Lock对象,对临界区加锁

    12.4 如果我们的程序用到了多线程,我们相对临界区进行加锁处理,避免竞态条件的出现 可以利用threading模...

  • Java并发基础篇(6):竞态条件与临界区

    在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源。如,同一内存区(变量,数组,或对象)、...

  • 【Golang】竞态条件 (Race Conditions)

    欢迎关注微信公众号:全栈工厂 1. 什么是竞态条件? 竞态条件是指在并发环境中,当有多个事件同时访问同一个临界资源...

  • 【链安】竞态条件漏洞分析及详细修复建议

    什么是竞态条件 【竞态条件】竞态条件的官方定义是如果程序的执行顺序改变会影响结果,它就属于一个竞态条件。在智能合约...

  • 锁与条件变量

    0、一些关键词 临界区:访问共享变量或者资源的代码段,一定不能由多个线程同时执行 竞态条件:出现在多个执行线程大致...

网友评论

      本文标题:竞态条件与临界区

      本文链接:https://www.haomeiwen.com/subject/zxqfzftx.html