Java等待JFrame完成 [英] Java wait for JFrame to finish

查看:63
本文介绍了Java等待JFrame完成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a login frame that i have to wait for from another thread. Upon successful login frame disposes itself. And i want to pop up the main frame for the application. Right now i am watching a boolean value to determine when to fire up the main frame. What is the correct way of doing this? Watching a boolean value just does not feel elegant.

推荐答案

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

If you have Java 5 or later available, you could use a CountDownLatch. For example, assuming the main frame is in control initially, have the main frame create the CountDownLatch with a count down of 1 and pass this latch to the login frame. Then have the main frame wait for the latch to become 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();

登录框完成后,减少Latch:

Have the login frame, when done, decrement the Latch:

loginSignal.countDown();

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

Ensure that there is no way for your login frame to exit where it forgets to decrement the latch! As soon as the CountDownLatch reaches 0, the main frame becomes runnable.

你也可以使用 信号量 条件 (或 java.util.concurrent 中的任何其他选项),但为此目的, CountDownLatch 似乎更容易使用。

You could also use a Semaphore or Condition (or any of a few other choices from java.util.concurrent), but for this purpose, a CountDownLatch seems easier to use.

这篇关于Java等待JFrame完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆