Javaのマルチスレッドの概念から始めました。私は小さなJavaプログラムを書いたことがありますが、実際にその動作を理解することはできません。Javaマルチスレッドthread.sleep()
public class Mythread implements Runnable{
@Override
public void run() {
System.out.println("mythread: ");
Thread t=new Thread(this,"thread1");
for(int i=1;i<5;i++)
{
System.out.println("in for of myThread");
try {
t.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class ThreadTest {
public static void main(String[] args) {
System.out.println("in main thread");
Mythread mythread=new Mythread();
Thread thread=new Thread(mythread,"thread0");
thread.start();
for(int i=1;i<5;i++)
{
System.out.println("main class: "+i);
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
私は上記のプログラムを実行すると、スレッド1がスリープ状態になると、スリープ状態になることがわかります。
t.sleep(1000);
は同じスレッドthread1
とthread0
ていますか? また、私はthread1
私のコードのどこに開始していないし、なぜスレッドはスリープ状態になるのですか?
私は完全な参考書をマルチスレッドとJavaを参照するだけの初心者です。
[Thread.sleep](http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#sleep-long-)は静的メソッドです。それはあなたがどこから呼び出されても問題ではありません。それはコンパイルエラーではない非静的なコンテキストでそれを呼び出すことができるJavaのクールです。 – Powerlord