2013-10-13 4 views
1

Я хочу, чтобы это логическое значение, чтобы изменить от ложного к истине через 5 секунд (Это код, который я в настоящее время)Thread.sleep() альтернативы

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

Но я не хочу, чтобы весь клиент замерзать, Я не использую многопоточность или что-то в этом роде

+1

* «Но я не хочу, чтобы весь поток, чтобы остановить ...» * Что вы хотите, чтобы это сделать в это время? –

+0

Так что позвоните в другую тему, если вы хотите, чтобы эта тема продолжала работать –

+0

Как @ T.J.Crowder сказал, в чем же необходимость? :) –

ответ

5

Возможно, вы захотите рассмотреть возможность поиска в Timer, который выполняется через 5 секунд после того, как вы попросите его выполнить. Выполните таймер только один раз.

Таким образом, вы получаете то, что хотите, и в то же время вы не замораживаете приложение. Сам таймер - это другой поток, поэтому он не будет блокировать ваше приложение.

свинг таймер учебник: 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. 
Смежные вопросы