您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java并发多线程编程——线程中断案例

小志的博客 发布时间:2021-04-11 21:20:24 ,浏览量:0

目录
    • 一、如何让线程中断
    • 二、如何查看线程是否中断
    • 三、线程中断案例
    • 三、线程中断后依然在运行,没有终止的解决方式

一、如何让线程中断
  • 调用java.lang包下的Thread类中interrupt方法 在这里插入图片描述
二、如何查看线程是否中断
  • 调用java.lang包下的Thread类中interrupted方法 在这里插入图片描述
三、线程中断案例

说明:启动d1和d2两个线程,d2线程调用interrupt方法,查看d2线程是否中断

1、代码

package com.xz.thread.t1;

/**
 * @description:
 * @author: xz
 */
public class Demo2 extends Thread{
    //构造方法
    public Demo2(String name){
        super(name);
    }

    @Override
    public void run() {
       while(true){
           System.out.println(getName()+"——运行......");
           try {
               Thread.sleep(200);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
    }

    public static void main(String[] args) {
        Demo2 d1 = new Demo2("线程1");
        Demo2 d2 = new Demo2("线程2");

        d1.start();
        d2.start();
        //中断d2线程
        d2.interrupt();

    }
}

2、输出如下:

在这里插入图片描述 3、结论

  • 由上图可知d2线程中断后依然在运行,没有终止,运行后报java.lang.InterruptedException异常。
三、线程中断后依然在运行,没有终止的解决方式

1、需要我们自己处理,在逻辑中需要用interrupted()方法查看当前线程是否中断。 2、代码

package com.xz.thread.t1;

/**
 * @description:
 * @author: xz
 */
public class Demo2 extends Thread{
    //构造方法
    public Demo2(String name){
        super(name);
    }

    @Override
    public void run() {
       while(!interrupted()){//如果不中断则运行,否则运行终止。
           System.out.println(getName()+"——运行......");
           try {
               Thread.sleep(200);
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
    }

    public static void main(String[] args) {
        Demo2 d1 = new Demo2("线程1");
        Demo2 d2 = new Demo2("线程2");

        d1.start();
        d2.start();
        //中断d2线程
        d2.interrupt();

    }
}

3、输出截图如下图: 在这里插入图片描述

4、结论

  • 由上图可知d2线程中断后,只有d1线程在运行。说明d2线程已中断。
关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0414s