Java 类java.awt.SecondaryLoop 实例源码
项目:incubator-netbeans
文件:NbLifecycleManager.java
private boolean blockForExit(CountDownLatch[] arr) {
synchronized (NbLifecycleManager.class) {
if (onExit != null) {
arr[0] = onExit;
LOG.log(Level.FINE, "blockForExit, already counting down {0}", onExit);
return true;
}
arr[0] = onExit = new CountDownLatch(1) {
@Override
public void countDown() {
super.countDown();
SecondaryLoop d = sndLoop;
LOG.log(Level.FINE, "countDown for {0}, hiding {1}, by {2}",
new Object[] { this, d, Thread.currentThread() }
);
if (d != null) {
while (!d.exit()) {
LOG.log(Level.FINE, "exit before enter, try again");
}
}
}
};
LOG.log(Level.FINE, "blockForExit, new {0}", onExit);
return false;
}
}