zoukankan      html  css  js  c++  java
  • 使用线程模拟死锁情形

    (转自南瓜皮的网屋)

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

    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();

    }

    }

  • 相关阅读:
    诸侯安置
    可可西里
    直线交点
    切割多边形
    ACM挑战程序设计竞赛1.1抽签
    朝鲜战争:轰炸大小和岛
    星际争霸II 战斗问题
    乒乓球
    瑞士轮
    NOIP 2010 普及组解题报告
  • 原文地址:https://www.cnblogs.com/pxsbest/p/2631698.html
Copyright © 2011-2022 走看看