• 使用线程模拟死锁情形


    (转自南瓜皮的网屋)

    死锁问题是并发处理的一种典型错误情况,下面的代码演示了这个情形:

    public class TestDeadLock implements Runnable {

    public int flag = 1;

    static Object o1 = new Object(), o2 = new Object();

    public void run() {

    System.out.println("flag=" + flag);

    if(flag == 1) {

    synchronized(o1) {

    try {

    Thread.sleep(500);

    } catch (Exception e) {

    e.printStackTrace();

    }

    synchronized(o2) {

    System.out.println("1");

    }

    }

    }

    if(flag == 0) {

    synchronized(o2) {

    try {

    Thread.sleep(500);

    } catch (Exception e) {

    e.printStackTrace();

    }

    synchronized(o1) {

    System.out.println("0");

    }

    }

    }

    }

    public static void main(String[] args) {

    TestDeadLock td1 = new TestDeadLock();

    TestDeadLock td2 = new TestDeadLock();

    td1.flag = 1;

    td2.flag = 0;

    Thread t1 = new Thread(td1);

    Thread t2 = new Thread(td2);

    t1.start();

    t2.start();

    }

    }

  • 相关阅读:
    react-umi 光速上手
    vue 和 react 的区别
    SP12323 NAKANJ
    UVA439 骑士的移动
    NOI 2020 Vlog
    二叉查找树
    可持久化线段树(主席树)
    权值线段树
    YNOI2020 游记
    《四月是你的谎言》语录
  • 原文地址:https://www.cnblogs.com/pxsbest/p/2631698.html
Copyright © 2020-2023  润新知