Java死锁

Java线程同步死锁问题

死锁是在进行多线程同步操作的时候 有可能产生的一种问题

什么是死锁呢...

前几天看了一个 程序员面试时 与Hr的对话

H:请解释什么是死锁 解释好了 给你发offer

M:先给我发offer我就解释

H:请解释什么是死锁 解释好了 给你发offer

M:先给我发offer我就解释

H:请解释什么是死锁 解释好了 给你发offer

M:先给我发offer我就解释

....

这就是死锁的基本概念

我在等你释放资源,你在等我不等你...

举例

package com.xiaowang;


class Hr {
    public synchronized void say(Mn m) {
        System.out.println("请解释死锁");
        m.get();
    }

    public synchronized void get() {
        System.out.println("你入职了!");
    }
}

class Mn {
    public synchronized void say(Hr h) {
        System.out.println("先发offer");
        h.get();
    }

    public synchronized void get() {
        System.out.println("有工作了!");
    }

}

class tests implements Runnable {
    private Mn m = new Mn();
    private Hr h = new Hr();

    @Override
    public void run() {
        h.say(m);
    }
    public tests() {
        new Thread(this).start();
        m.say(h);
    }
    public static void main(String args[]) {
        new tests();
    }

}

进程不会结束 还在进行

有时候代码 处理不当 会不定期出现死锁,这是正常的开发的调试问题 属于正常

原文地址:https://www.cnblogs.com/laowt/p/14545992.html