プロが教えるわが家の防犯対策術!

今、訓練校に通っていて課題をだされていますが、どうもうまく行きませんのでお知恵を拝借したく思います。


 java Threadのsleepを使用し、クイズの回答を10秒以内で答えるというものですが、 途中で入力をすると、次の問題の回答時間が異様に早くなり1秒ではなくなってしまいます。

 こういう場合、入力をすれば、runメソッドが終わるというプログラムはどうやって書けばいいのか教えて頂きたく思います。
どうぞよろしくお願いいたします。

<下記、threadの部分だけですが、パッケージを使用するという課題のため無理やり使っています。>

package pa;

public class CountTest extends Thread {
public void start() {
super.start();
}

public void run() {
for (int i=10; i >= 1; i--) {
try{
sleep(1000);
System.out.print("⇒" );

}catch(InterruptedException e){}
}
System.out.println("");
for (int i=1; i >= 1; i--) {
/}
System.out.println("Time up ");
System.out.println("");
System.out.println("1-4で答えを記入してください");
}

A 回答 (2件)

スレッドが途中で止まれるように、


スレッドを操作させる為のフラグ(boolean型の変数)を用意してあげるのが良いでしょう。

クイズを出しているクラスは、スレッドを動かしたい時にスレッドのフラグにtrue、止めたい時にfalseを代入するように書いておき、

スレッド側は、フラグがfalseの時止まる、という処理を追記してあげれば良いと思います。


課題頑張ってください。
    • good
    • 0

役に立つか分かりませんが、こういう本もありますよ



http://www.hyuki.com/dp/dp2.html#contents
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!