Java等待JFrame完成

Ham*_*aya 3 java jframe

我有一个登录框架,我必须等待另一个线程.成功登录框架后自行处理.我想弹出应用程序的主框架.现在我正在观看一个布尔值来确定何时启动主框架.这样做的正确方法是什么?看一个布尔值只是感觉不优雅.

Edd*_*die 11

如果您有Java 5或更高版本,则可以使用CountDownLatch.例如,假设主帧最初处于控制状态,请让主帧创建CountDownLatch倒计时为1并将此锁存器传递给登录帧.然后让主框架等待锁存器变为0:

CountDownLatch loginSignal = new CountDownLatch(1);
     ...    // Initialize login frame, giving it loginSignal 
     ...    // execute login frame in another Thread
// This await() will block until we are logged in:
loginSignal.await();
Run Code Online (Sandbox Code Playgroud)

完成登录框后,减少Latch:

loginSignal.countDown();
Run Code Online (Sandbox Code Playgroud)

确保您的登录框架无法退出忘记闩锁的位置!一旦CountDownLatch达到0,主框架就变为可运行.

你也可以使用Semaphore或Condition(或其他一些选择java.util.concurrent),但为了这个目的,CountDownLatch似乎更容易使用.