【java并发】interrupt、isInterrupted、interrupted的使用

大家好,我是walker
一个从文科自学转行的程序员~
爱好编程,偶尔写写编程文章和生活
欢迎关注公众号【I am Walker】,回复“电子书”,就可以获得200多本编程相关电子书哈~
我的gitee:https://gitee.com/shen-chuhao/walker.git 里面很多技术案例!

isInterrupted

查看当前中断信号是true还是false

interrupt

  • 用于中断线程
  • 调用该方法的线程的状态为将被置为**”中断”状态**。

注意:

  • 线程中断仅仅是置线程的中断状态位不会停止线程
  • 需要用户自己去监视线程的状态为并做处理。
  • 支持线程中断的方法(也就是线程中断后会抛出interruptedException 的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。

案例:一般而言,interrupt是和isInterrupted进行结合使用的,interrupt进行中断,然后isInterrupted判断中断的状态,来进行状态的判断,然后做对应的逻辑处理

package stopThread;

public class InterruptTest {

    static class MyThread extends Thread{
        @Override
        public void run() {
            /**
             * isInterrupted 获取线程的中断状态
             */ 
            boolean interrupted = isInterrupted();
            //如果没有中断则执行,如果中断了则输出中断
            while(!interrupted){
                System.out.println("未中断,执行");
            }
            System.out.println("中断,不执行");

        }
    }

    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
        /**
         * 这里只是将状态设置为中断位而已,不会将直接停止线程,因此要结合条件判断进行使用
         */ 
        myThread.interrupt();


    }
}

interrupted

  • 是静态方法,查看当前中断信号是true还是false并且清除中断信号。
  • 如果一个线程被中断了,第一次调用 interrupted 则返回 true,第二次和后面的就返回 false 了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WalkerShen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值