美文网首页
Java中的线程操作

Java中的线程操作

作者: 卢大管家 | 来源:发表于2018-08-18 19:07 被阅读0次

    周末闲来无事,看了一下关于java多线程的数,每次看都有新的收获。年纪大了,记忆力不怎么好,打算记下来每次的收获,方便以后随时复习。

    1. interrupt(),interrupted()与isInterrupted()的区别

    (1)interrupt()是对线程的一个中断操作

    首先,interrupt()方法比较好理解,是对线程的一个中断操作,没有返回值。但实际上,改方法并不会终止一个正在运行的线程。调用interrupt()方法只是在调用线程中打了一个停止的标记,并不是真的停止线程。若要停止线程,需配合其他操作。

    (2)interrupted()是一个静态方法,对运行该方法的线程起作用

    interrupted()与isInterrupted()都是返回boolean状态,判断线程是否已终止。区别是前者是一个静态方法,只对运行改方法的线程起作用,可类比Thread.sleep方法;而后者不是静态方法,是对调用方起作用。

    (3)interrupted()执行以后具有将状态标识置位false的功能

    interrupted()执行以后具有状态置位的功能,也就是说,如果第一次调用Thread.interrupted()返回true,再调用一次改方法会返回false,因为状态被置位了。但isInterrupted()仅仅返回线程中断状态,并无置位功能。

    2. 提前中断线程的方法

    推荐:主动抛异常

    throw new InterruptedException();
    

    中断线程的方法很多,如直接return也是可以的。推荐使用主动抛异常的方法,原因主要是主动抛出异常中断状态可以继续向上抛出,业务逻辑若需要针对这种中断做相应处理就会比较方便。

    相关文章

      网友评论

          本文标题:Java中的线程操作

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