程序中若要进行资源共享就要进行同步(synchronized()),但是同步用的过多就会出现死锁的现象!
public class DeadThread implements Runnable {
Bangjiafang b = new Bangjiafang();
GeGe g = new GeGe();
public DeadThread() {
new Thread(this).start();
b.say(g);
}
@Override
public void run() {
// TODO Auto-generated method stub
g.say(b);
}
public static void main(String[] args) {
new DeadThread();
}
}
class Bangjiafang {
public synchronized void say(GeGe g) {
System.out.println("给我500W,放你妹");
g.fun();
}
public synchronized void fun() {
System.out.println("绑架犯得到了500w,放了妹妹");
}
}
class GeGe {
public synchronized void say(Bangjiafang b) {
System.out.println("放妹,给你500w");
b.fun();
}
public synchronized void fun() {
System.out.println("哥哥救出妹妹,损失了500w");
}
}
运行后
给我500W,放你妹
放妹,给你500w
绑架犯既没有得到500w,哥哥也没有救出妹妹,双方一直是处于一种等待僵持的状态,即所谓线程死锁。