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;
    }
}