下面列出了怎么用java.awt.SecondaryLoop的API类实例代码及写法,或者点击链接到github查看源代码。
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;
}
}
/**
* Run any events currently in the event queue
*/
public static void pumpPendingEvents()
{
EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
if (eq.peekEvent() != null)
{
SecondaryLoop l = eq.createSecondaryLoop();
SwingUtilities.invokeLater(l::exit);
l.enter();
}
}