美文网首页
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也是可以的。推荐使用主动抛异常的方法,原因主要是主动抛出异常中断状态可以继续向上抛出,业务逻辑若需要针对这种中断做相应处理就会比较方便。

相关文章

  • JVM线程模型概览

    HotSpot中的线程模型是Java线程(java.lang.Thread)与本地操作系统线程一一映射,本地线程在...

  • Java 线程池中worker

    Java 线程池中worker 在java线程中,真正执行计算操作的内容是在一个worker类中。 Worker的...

  • Java 线程池中worker

    Java 线程池中worker 在java线程中,真正执行计算操作的内容是在一个worker类中。 Worker的...

  • Java-3

    线程中的join()多线程中的run()和start()java中的++i操作是线程安全的吗3*0.1 == 0....

  • java学习路线

    javaSE java基础语法 java文件操作 java网络操作 java多线程 java数据库操作 java ...

  • Java Thread线程使用、线程安全(一)

    一、参考 1、java中的线程安全2、Java总结篇系列:Java多线程(一) 二、使用场景 1、耗时的操作使用线...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • Java中的线程操作

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

  • Java线程池的理论与实践

    Java中的Thread与操作系统中的线程的关系 线程切换的各种开销 ThreadGroup存在的意义 使用线程池...

  • 还不理解java synchronized?看这篇文章就够了

    Java多线程编程中,经常涉及到多个线程操作同一个对象的问题,为了保证操作结果符合预期,需要保证操作对象线程安全。...

网友评论

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

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