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();
}
}
进程不会结束 还在进行
有时候代码 处理不当 会不定期出现死锁,这是正常的开发的调试问题 属于正常