Thread.sleep()替代方案

时间:2013-10-13 21:47:02

标签: java multithreading sleep

我希望这个布尔值在5秒后从false变为true(这是我目前的代码)

checkUser = false;
    loginMessage2 = "Error connecting to server.";
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    checkUser = true;

但我不希望整个客户端冻结,我不使用多线程或任何类型

1 个答案:

答案 0 :(得分:5)

您可能需要考虑查看在您要求执行后执行5秒后执行的Timer。仅执行一次计时器。

这样,你得到你想要的东西,同时你不冻结应用程序。计时器本身是一个不同的线程,因此它不会阻止您的应用程序。

Swing计时器教程:http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

一个非常简短的例子:

ActionListener listener = new ActionListener(){
  public void actionPerformed(ActionEvent event){
    checkUser = true;
  }
};
Timer checkUserTimer = new Timer(5000, listener); // the 5 second gap
checkUserTimer.start(); // start the timer.