package 多线程技能1;
/**
* 在sleep状态下停止线程
*
* 如果线程在sleep()状态下停止,则该线程会进入catch语句,并且清除停止状态值,变为false;
*
* 不管调用顺序 只要sleep和interrupt在一起就会出现异常 对同一个线程而言 在一个时间内。
* 1)在sleep状态下,执行interrupt方法会出现异常
* 2)调用interrupt方法给线程打了中断标记,再执行sleep方法也会出现异常。
*/
/**
* 测试
*/
class MyThreadT1114 extends Thread{
@Override
public void run() {
super.run();
try {
System.out.println("run begin");
//与前几个测试类的主要区别 会进入睡眠 状态 即调用sleep方法。
Thread.sleep(1000);
System.out.println("run end");
} catch (InterruptedException e) {
System.out.println("在沉睡中被停止!进入catch!"+this.isInterrupted());
e.printStackTrace();
}
}
}
/**
* 测试类2
*/
class MyThread1T1114 extends Thread{
@Override
public void run() {
super.run();
try {
for (int i=0;i<10000;i++){
System.out.println("i="+(i+1));
}
System.out.println("run begin");
Thread.sleep(10000);
System.out.println("run end");
} catch (InterruptedException e) {
System.out.println("先停止,在遇到了sleep!进入catch!");
e.printStackTrace();
}
}
}
/**
* 运行类Run1T1114
*/
class Run1T1114{
public Run1T1114(){
try{
MyThreadT1114 myThreadT1114=new MyThreadT1114();
myThreadT1114.start();
Thread.sleep(100);
myThreadT1114.interrupt();
} catch (InterruptedException e) {
System.out.println("Run1T1114 ecoh");
e.printStackTrace();
}
System.out.println("Run1T114 end!");
}
}
/**
* 运行类2
*/
class Run2T1114{
public Run2T1114(){
MyThread1T1114 myThread1T1114=new MyThread1T1114();
myThread1T1114.start();
myThread1T1114.interrupt();
System.out.println("Run2T1114 end");
}
}
public class T1114 {
public static void main(String[] args) {
//Run1T1114 run1T1114=new Run1T1114();
Run2T1114 run2T1114=new Run2T1114();
}
}
sleep状态下停止线程-T1114
最新推荐文章于 2023-08-15 16:56:39 发布