我不知道如何完成此操作。我想有一個計時器,它可以永久保持循環,但在循環運行時,我希望能夠讓掃描儀運行並等待用戶輸入。基本上就像聊天。循環會不斷檢查發佈的新消息,但在循環運行時用戶仍然可以提交消息。Java - 循環,同時保持另一個代碼運行
我該怎麼做?
另外我還沒有一個GUI設置。這一切都在一個簡單的命令提示符下運行(如果重要的話)。
我不知道如何完成此操作。我想有一個計時器,它可以永久保持循環,但在循環運行時,我希望能夠讓掃描儀運行並等待用戶輸入。基本上就像聊天。循環會不斷檢查發佈的新消息,但在循環運行時用戶仍然可以提交消息。Java - 循環,同時保持另一個代碼運行
我該怎麼做?
另外我還沒有一個GUI設置。這一切都在一個簡單的命令提示符下運行(如果重要的話)。
您可以使用多線程應用程序,但在我看來,這會比您尋找的要複雜一點。
: 儘量只定義一個計時器,並添加一個TimerTask給它,然後以在輸入一個循環:
Scanner scan = new Scanner(System.in);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//Do whatever you want with your messages here
}
}, 0, 1000);
//Wait for user input
while(true) {
String bar = scan.next();
}
你可以擁有它正在等待輸入線程運行。一旦輸入輸入,主程序就可以調用線程中的方法,然後可以決定是終止循環還是繼續。
好吧,聽起來很早,但你可以做多個線程,或者你可以讓你的循環在來自用戶的新消息之間來回跳動,並檢查是否有新的東西發佈。
如果你從InputStream
(或其子類之一),你可以調用available
方法來檢查,看看是否讀取如果> 0(如果有什麼要讀取可用的字節數任其他聊天參與者或用戶輸入)。
所以,一個循環:
這基本上就是這樣。
呀但這重置掃描器每秒,它會顯示是否有新郵件但是如果您在輸入消息時發生這種情況,我認爲消息掃描程序會重置。 – Cody
我不知道你的意思。代碼將保留在「while(true)」循環中,同時定時器同時運行,掃描器不應該重置 –
哦,這可能是因爲即時通訊在命令提示符下運行,因此它給人的印象是重置,生病測試它,看看 – Cody