2013-10-13 165 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.