我希望这个布尔值在5秒后从false变为true(这是我目前的代码)
checkUser = false;
loginMessage2 = "Error connecting to server.";
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
checkUser = true;
但我不希望整个客户端冻结,我不使用多线程或任何类型
答案 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.