• Java基础之线程5-线程同步死锁


    死锁:线程之间因条件相互竞争,导致线程都不能正常执行完,从而产生了死锁。

    死锁的例子:

    public class TestDeadLock implements Runnable {
    public int flag = 1;
    static Object o1 = new Object(), o2 = new Object();

    @Override
    public void run() {
    System.out.println("flag = " + flag);
    if (flag == 1){
    synchronized (o1){
    try {
    Thread.sleep(500);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }

    synchronized (o2){
    System.out.println("1");
    }
    }
    }

    if (flag == 0){
    synchronized (o2){
    try {
    Thread.sleep(500);
    } catch (InterruptedException 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();

    }
    }
  • 相关阅读:
    每日一练leetcode
    每日一练leetcode
    每日一练 leetcode
    每日一练leetcode
    每日一练leetcode
    leetcode每日一练
    BigDecimal类 定义及用法
    每日一练leetcode
    每日一练leetcode
    字符串表达式校验&求值(C#实现) 附代码
  • 原文地址:https://www.cnblogs.com/risuschen/p/12872778.html
Copyright © 2020-2023  润新知