美文网首页java多线程
多线程之理解Interrupt

多线程之理解Interrupt

作者: 初夏时的猫 | 来源:发表于2019-11-10 19:20 被阅读0次

在学习多线程时,多多少少会看一些源码,其中interrupt经常出现,于是看了很多博客学习了一下interrupt,并对interrupt做一下总结。
interrupt:中断。
线程分为几种状态:新建,就绪,运行,堵塞,死亡。
java.lang.Thread中关于interrupt的三个方法:

private native boolean isInterrupted(boolean ClearInterrupted);
public boolean isInterrupted() {
        return isInterrupted(false);
    }
public static boolean interrupted() {
        return currentThread().isInterrupted(true);
    }
    public void interrupt() {
        if (this != Thread.currentThread())
            checkAccess();

        synchronized (blockerLock) {
            Interruptible b = blocker;
            if (b != null) {
                interrupt0();           // Just to set the interrupt flag
                b.interrupt(this);
                return;
            }
        }
        interrupt0();
    }

1.interrupt:给当前线程设置中断标记(只是一个标记,需要自己写逻辑中断线程)。
2.interrupted:如果线程有中断标记则清除并返回true,否则false。
3.isinterrupted:如果线程有中断标记返回true,否则返回false。
注:interrupted方法内部return的是currentThread而不是调用方法的线程
下面举个例子

class Runner implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(i);
            if (Thread.currentThread().isInterrupted()){
                System.out.println("第一次"+Thread.interrupted());
                System.out.println("第二次"+Thread.interrupted());
                break;
            }

        }
    }
}
public class Test {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Runner(),"A");;
        t1.start();
        t1.interrupt();;
    }
}

运行结果


图片.png

相关文章

  • 多线程之理解Interrupt

    在学习多线程时,多多少少会看一些源码,其中interrupt经常出现,于是看了很多博客学习了一下interrupt...

  • 多线程基础

    多线程基础总结 一、线程中断 interrupt方法用来请求终止线程。 1. interrupt置位中断标志位 当...

  • 结合interrupt state来理解interrupt

    [TOC] Thread类的interrupt方法倒是见过好几次,但是一直不知道他的具体是干什么的,今天查了以下a...

  • Java多线程学习之Interrupt中断

    引言 本文将由以下几点来说明Interrupt中断:1.什么是中断?为什么使用中断?2.中断的作用3.中断的使用 ...

  • interrupt()深入理解

    线程中断的理解例子一线程调用interrupt()线程会中止吗? 结果是打印0-9,因为到10线程stop停止了 ...

  • java多线程问题之Sleep之后调用interrupt

    如上,如果在杀死线程interrupt方法之前使用sleep方法,则线程仍然不会释放所占用的资源。反而去除slee...

  • 多线程基础之常见概念的理解

    多线程基础之常见概念的理解 我这里从线程的关键概念入手,介绍一下多线程,并且结合代码说下自己的理解。 线程安全 我...

  • Thread.interrupt()的理解

    目标 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。Thread.interrupt 的作...

  • 5、RedLock的实现

    你需要先理解中断是什么:线程的interrupt()方法[https://blog.csdn.net/zengmi...

  • sonar提示修复

    Either re-interrupt this method or rethrow the "Interrupt...

网友评论

    本文标题:多线程之理解Interrupt

    本文链接:https://www.haomeiwen.com/subject/ymvabctx.html