我有一个登录框架,我必须等待另一个线程.成功登录框架后自行处理.我想弹出应用程序的主框架.现在我正在观看一个布尔值来确定何时启动主框架.这样做的正确方法是什么?看一个布尔值只是感觉不优雅.
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似乎更容易使用.
| 归档时间: |
|
| 查看次数: |
9565 次 |
| 最近记录: |