停止线程-异常法


public class MyThread extends Thread{
    @Override
    public void run() {
        super.run();
        try{
            for (int i = 0; i < 500000; i++) {
                //通过 interrupted 方法是测试 当前线程 是否已经是中断状态
                // (该方法是Thread类的静态方法,执行后会将状态标识清除为false的功能)
                //另一个 isInterrupted 方法是测试 线程Thread对象 是否已经是中断状态,
                // 执行后不清除状态标识
                if(this.interrupted()){
                    System.out.println("在for中退出,并抛出异常");
                    throw new InterruptedException();
                }
                System.out.println("i:"+i);
            }
            System.out.println("for下面");
        }catch (InterruptedException e){
            System.out.println("进入 MyThread catch 异常块");
            e.printStackTrace();
        }
    }
}


public class RunThread {

    public static void main(String[] args) {
        try{
            MyThread myThread = new MyThread();
            myThread.start();
            //先让main线程睡眠一段时间,保证线程mythread能运行一会儿
            Thread.sleep(200);
            //在myThread线程之后一段时间后,调用interrupt方法,将myThread的状态标识为false
            //这时,myThread就会抛出异常
            myThread.interrupt();
        }catch (InterruptedException e){
            //由于线程main和线程myThread是异步执行的,所以在myThread抛出异常时,
            // main已经执行完毕了,所以没有执行这个catch块和最下面的sout
            System.out.println("进入main catch 异常块");
            e.printStackTrace();
        }
        System.out.println("end main");
    }
}

运行结果(main线程睡眠期间,myThread运行一段时间,然后main线程中将myThread状态标识为true,此时myThread线程判断标识为true,则抛出异常,进入catch,在myThread抛出异常期间,由于main和myThread是异步的,所以main在抛出异常之前就已经执行完毕了)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,018评论 1 18
  • 早上起床到现在,半个小时,不知道要写什么了。习惯了写情绪,没有情绪时,反倒有点没着没落的了。也许真的,处理情绪变成...
    绽蕊向阳阅读 227评论 0 0
  • 在北京奥运会的前一年,我无意中翻读到一本书,令我印象非常难忘。因为之后我几次还去翻看问自己要不要买下来,因为当时没...
    苦无了阅读 305评论 0 0