我必须执行2个方法
await()
signal()
条件是在完成方法await()
的执行之后,只应调用方法signal()
。
在我的情况下,应用程序正在关闭。
我在这里写了示例:
private final Object lock = new Object();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
signal();
try {
await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Method: after await");
}
public void signal() {
synchronized (lock) {
System.out.println("Method before ");
**lock.notify();**
System.out.println("Method await after signal ");
}
}
public void await() throws InterruptedException {
// synchronized (lock) {
Thread t = new Thread() {
public void run() {
System.out.println("Method await before wait ");
try {
**lock.wait();**
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println("Method in exception ");
}
System.out.println("Method await after wait ");
}
};
}
答案 0 :(得分:0)
好的,这里有很多问题:
您永远不会开始Thread
。添加行
t.start();
创建Thread
。
未从同步代码中调用wait()
。在尝试执行代码时,这会给我IllegalMonitorStateException
。
您可能希望在await()
之前调用signal()
,并在两者之间等待一秒左右,以确保await()
首先获得锁定。如果没有,程序将阻止。