2011-10-17 36 views
1

我不知道如何完成此操作。我想有一個計時器,它可以永久保持循環,但在循環運行時,我希望能夠讓掃描儀運行並等待用戶輸入。基本上就像聊天。循環會不斷檢查發佈的新消息,但在循環運行時用戶仍然可以提交消息。Java - 循環,同時保持另一個代碼運行

我該怎麼做?

另外我還沒有一個GUI設置。這一切都在一個簡單的命令提示符下運行(如果重要的話)。

回答

1

您可以使用多線程應用程序,但在我看來,這會比您尋找的要複雜一點。

: 儘量只定義一個計時器,並添加一個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(); 
    } 
+0

呀但這重置掃描器每秒,它會顯示是否有新郵件但是如果您在輸入消息時發生這種情況,我認爲消息掃描程序會重置。 – Cody

+0

我不知道你的意思。代碼將保留在「while(true)」循環中,同時定時器同時運行,掃描器不應該重置 –

+0

哦,這可能是因爲即時通訊在命令提示符下運行,因此它給人的印象是重置,生病測試它,看看 – Cody

0

你可以擁有它正在等待輸入線程運行。一旦輸入輸入,主程序就可以調用線程中的方法,然後可以決定是終止循環還是繼續。

0

好吧,聽起來很早,但你可以做多個線程,或者你可以讓你的循環在來自用戶的新消息之間來回跳動,並檢查是否有新的東西發佈。

如果你從InputStream(或其子類之一),你可以調用available方法來檢查,看看是否讀取如果> 0(如果有什麼要讀取可用的字節數任其他聊天參與者或用戶輸入)。

所以,一個循環:

  • 如果(newMessages)...發佈新的消息...
  • 如果(newUserChat)...發送新的消息出來...

這基本上就是這樣。

相關問題