你创建一个监视器(这只是一个简单的对象)
public static final Object monitor = new Object();
public static boolean monitorState = false;
现在,您创建一个等待方法
public static void waitForThread() {
monitorState = true;
while (monitorState) {
synchronized (monitor) {
try {
monitor.wait(); // wait until notified
} catch (Exception e) {}
}
}
}
以及解锁服务员的方法.
public static void unlockWaiter() {
synchronized (monitor) {
monitorState = false;
monitor.notifyAll(); // unlock again
}
}
所以当你想做一些奇特的事情时,你可以这样做:
new Thread(new Runnable() {
@Override
public void run() {
// do your fancy calculations
unlockWaiter();
}
}).start();
// do some stuff
waitForThread();
// do some stuff that is dependent on the results of the thread
当然,有很多可能性,这只是一个版本如何做到这一点.