java同步机制解决了线程安全问题,但是同时也引发了死锁现象。
死锁现象如何解决呢: 没法解决。 只能尽量的避免死锁现象。
死锁现象出现 的根本原因:
1. 存在两个或者两个以上的线程存在。
2. 多个线程必须共享两个或者两个以上的资源。
public class DeadLock {
public static void main(String[] args) {
new Thread(new Runnable() { // 创建线程, 代表中国人
public void run() {
synchronized ("刀叉") { // 中国人拿到了刀叉
System.out.println(Thread.currentThread().getName()
+ ": 你不给我筷子, 我就不给你刀叉");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized ("筷子") {
System.out.println(Thread.currentThread()
.getName() + ": 给你刀叉");
}
}
}
}, "中国人").start();
new Thread(new Runnable() { // 美国人
public void run() {
synchronized ("筷子") { // 美国人拿到了筷子
System.out.println(Thread.currentThread().getName()
+ ": 你先给我刀叉, 我再给你筷子");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized ("刀叉") {
System.out.println(Thread.currentThread()
.getName() + ": 好吧, 把筷子给你.");
}
}
}
}, "美国人").start();
}
}
|
|