あなたの習慣について教えてください!!

こんにちは。
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()と書いたときは、
そのクラスを休止させる、
という理解で、いいのでしょうか。

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

A 回答 (1件)

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)にしないと。
    • good
    • 0

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