1.7.4熟睡中に停止
2510 ワード
スレッドがsleep()状態でスレッドを停止すると、どのような効果が得られますか?
プログラムの実行結果は次のとおりです.
出力の結果、sleep状態でスレッドを停止するとcatch文に入り、停止状態値をfalseにする
前の実験ではsleepを先にしてinterrupt()で停止したが,これとは逆の操作はスレッドを学習する際にも注意しなければならない.
実行結果は次のとおりです.
Javaマルチスレッドコアプログラミング技術から抜粋-1.7.4
/**
* MyThread
* @author wuyoushan
* @date 2017/3/21.
*/
public class MyThread extends Thread {
@Override
public void run() {
super.run();
try {
System.out.println("run begin");
Thread.sleep(200000);
System.out.println("run end");
}catch(InterruptedException e){
System.out.println(" ! catch!"+this.isInterrupted());
e.printStackTrace();
}
}
}
/**
* @author wuyoushan
* @date 2017/3/20.
*/
public class Run {
public static void main(String[] args) {
try {
MyThread myThread=new MyThread();
myThread.start();
Thread.sleep(200);
myThread.interrupt();
} catch (InterruptedException e) {
System.out.println("main catch");
e.printStackTrace();
}
System.out.println("end");
}
}
プログラムの実行結果は次のとおりです.
run begin
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at wys.test.MyThread.run(MyThread.java:15)
end
! catch!false
出力の結果、sleep状態でスレッドを停止するとcatch文に入り、停止状態値をfalseにする
前の実験ではsleepを先にしてinterrupt()で停止したが,これとは逆の操作はスレッドを学習する際にも注意しなければならない.
/**
* MyThread
* @author wuyoushan
* @date 2017/3/21.
*/
public class MyThread extends Thread {
@Override
public void run() {
super.run();
try {
for (int i=0;i<100000;i++){
System.out.println("i="+(i+1));
}
System.out.println("run begin");
Thread.sleep(200000);
System.out.println("run end");
}catch(InterruptedException e){
System.out.println(" , sleep! catch!");
e.printStackTrace();
}
}
}
/**
* @author wuyoushan
* @date 2017/3/20.
*/
public class Run {
public static void main(String[] args) {
MyThread myThread=new MyThread();
myThread.start();
myThread.interrupt();
System.out.println("end!");
}
}
実行結果は次のとおりです.
i=99996
i=99997
i=99998
i=99999
i=100000
run begin
, sleep! catch!
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at wys.test.MyThread.run(MyThread.java:18)
Javaマルチスレッドコアプログラミング技術から抜粋-1.7.4