class B {
synchronized void ThreadA(A a) {
String name = Thread.currentThread().getName();
System.out.println(name + " entered B.ThreadB");
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println("B Interrupted");
}
System.out.println(name + " trying to call A.last()");
a.last();
}
synchronized void last() {
System.out.println("Inside A.last");
}
}
class Deadlock implements Runnable {
A a = new A();
B b = new B();
Deadlock() {
Thread t = new Thread(this, "RacingThread");
t.start();
}
@Override
public void run() {
b.ThreadA(a);
try {
Thread.currentThread().setName("线程名称:");
a.ThreadB(b);
System.out.println("Bcak in main thread");
}
public static void main(String args[]) {
new Deadlock();
}
}
作者: 李文富 时间: 2012-6-13 16:50
package inShool;
class A {
synchronized void ThreadB(B b) {
String name = Thread.currentThread().getName();
System.out.println(name + " entered A.ThreadA");
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println("A Interrupted");
}
System.out.println(name + " trying to call B.last()");
b.last();
notify();//你在根据题目设计一下wait 和notify 应该放的位置
}