みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Thread.sleep()について(休止の対象は)。

こんにちは。
Javaで、
Thread.sleep(duration);と書いた場合、
停止の対象となるスレッドは
どうなるのでしょうか。
もし、sleep()がインスタンスから、
呼び出せるなら、thread(インスタンス).sllep()
と書くことで、そのインスタンス(スレッドを
継承したクラス)を休止するので、
分かりやすいのですが、Thread.sleep()と
書くので、わかりずらいです。

以下のような、書き方に戸惑っています。
public class xx{
public static void main(String args){
while(1){
Thread.sleep(1000);
System.out.println("abc");
}
}
}
これは、
メインスレッドを対象としている、
と考えていいのでしょうか。

スレッドを継承したクラスで、
Thread.sleep()と書いたときは、
そのクラスを休止させる、
という理解で、いいのでしょうか。

何かアドバイスできる人がいましたら、
よろしくお願いします。

投稿日時 - 2009-11-03 17:22:55

QNo.5419121

暇なときに回答ください

質問者が選んだベストアンサー

Thread.sleepを実行したスレッドを停止します。
スレッドはクラスごとではないので、あるクラスのメソッドを別クラスで作ったスレッドから実行すると、呼び出したほうのスレッドで実行されることになります。

例えば、
public class xx{
 public static void main(String[] args){
  Thread thread1 = new Thread(){
   @Override public void run(){
    while(true){
     try {
      Thread.sleep(1000);
      System.out.println("abc");
     } catch (InterruptedException ex) {
      ex.printStackTrace();
     }
    }
   }
  };
  thread1.start();
 }
}
こうしたら、thread1が停止されます。

あとJavaだとwhile(1)だとコンパイルエラーになるような?
while(true)にしないと。

投稿日時 - 2009-11-03 18:57:50

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問