- 締切済み
applet
スレッドを使ってタイマーを作ろうと思っています。なぜか、ゆっくりとしかできないのですが・・。よろしくお願いします。 class TimerA implements Runnable { private boolean flg = true; private int time = 6000; public boolean isFlg() { return flg; } public int getTime(){ return time; } public void run() { for(;time > 0; time--) ; flg = false; System.out.println(time); } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
以下のプログラムを実行してもらえばスレッドによるタイマの動作はわかると思います。 class TimerA implements Runnable { private boolean flg = true; private int time = 6000; public boolean isFlg() { return flg; }; public int getTime() { return time; }; public void run() { for(;time > 0; time--) try { Thread.sleep(1); } catch (Exception e) {};/*[1]*/ flg = false; System.out.println(time); }; } public class timer { public static void main(String args[]) { TimerA TimerRunnable = new TimerA(); Thread TimerThread = new Thread(TimerRunnable); TimerThread.start(); while (TimerRunnable.isFlg()) { try { Thread.sleep(100); } catch (Exception e) {}; System.out.println("Time=" + Integer.toString(TimerRunnable.getTime())); }; System.out.println("End of Main"); }; } TimerAクラスは、下の方が言っているように、ビジーループ([1])の部分がおかしいにで書き直しましたが、 ほかは元のままです。
- _ranco_
- ベストアンサー率58% (126/214)
ビジーループの使用はどんな場合にも根本的に間違っていますし、また、スレッドのタイトルは、もっと意味のあるタイトルにしてください。「applet」では、現在の読者に不親切であるばかりか、今後の検索の役に立ちません。