2012-04-01 24 views
1

このWebサイトでこのような他の同様の質問がありましたが、私は誰もこの記事について批判がなされる前に完全に答えられていないと言います。Java - タイマー付きのユーザー入力のスレッド

その、私は30秒のタイマーを使用して、ユーザー入力(文字列)以下のようにretriveする必要があり、単純な問題..

while (timer is still less than 30 seconds) 
     allow user to enter input (using either scanner, buffered reader) 

私は、このアタルをimplenetedする方法がわからないスレッドが必要になります知っているが、私が最初に着手したよりもずっと複雑に思えます。

おかげ

答えて

0

は、以下の(何のスレッドが取り付けられていないが;)やってみ):

long startTime = System.currentTimeMillis(); 
long timeElapsed; 
do { 
    // Get user input 
    . 
    . 


    // Process input 
    . 
    . 

    // Check time elapsed 
    timeElapsed = (System.currentTimeMillis() - startTime)/1000; 

} while (timeElapsed < 30); 

ベア心​​の中で私が得て、ユーザー入力がブロックされていることを前提としています。 (そうでなければ、whileループは、私がアドバイスしている、100msというスリープステートメントを入れるためのCPUを詰まらせるでしょう)

+0

これは良い提案ですが、これはユーザの入力を中断したり、これが思考の踏み台を使用しなければならない時間の長さです... – LmC

+1

ここで私はあなたがどこにいるのか理解しています。こちらをご覧ください:http://stackoverflow.com/questions/2275443/how-to-timeout-a-thread最初の答えはあなたの問題を解決します。一般的には、あらかじめ定義されたタイムアウトを使用してタスクを実行します(ユーザーの入力を取得する)。 – giorashc

関連する問題