美文网首页
多线程之中断线程

多线程之中断线程

作者: bjchenli | 来源:发表于2017-02-23 16:46 被阅读0次

1、 java中没有可以强制线程终止的方法。但是存在interrupt方法用来请求终止线程。当对一个线程调用interrupt方法时,线程的中断状态将被置位。
2、每个线程都存在boolean标志。
3、如果线程被阻塞,就无法检测中断状态。当在一个被阻塞的线程(调用sleep或者wait)上调用interrupt方法时,阻塞调用将会被Interrupted Exception异常中断。
4、如果在每次工作迭代之后调用sleep方法(或者其他的可中断方法),isInterrupted检测既没有必要也没有用处。如果在中断状态被置位时调用sleep方法,它不会休眠。相反,它将会清楚这一状态并抛出InterruptedException。因此,若是循环调用sleep,不会检测中断状态。

Interrupted方法和isInterrupted方法的区别:

1、Interrupted方法是一个静态方法,它检测当前的线程是否被中断,并且会清除该线程的中断状态。
2、isInterrupted方法是一个实例方法,可用来检测是否有线程被中断。但是调用这个方法不会改变中断状态。

在捕获InterruptedException异常应该如何做?

1、在catch子句中调用Thread.currentThread().interrupt()方法来设置中断状态。


void mySubTask(){

...

try{ sleep(delay); }

catch(InterruptedException){Thread.currentThread().interrupt();}

}

2、更好的选择是用throws InterruptedException标记方法,不采用try语句块捕获异常。


void mySubTask() throws InterruptedException{

     ...

     sleep(delay);

    ....

}

相关文章

  • 多线程深入话题

    优雅的停止线程 在多线程操作之中如果要启动多线程,肯定要使用Thread类中的start()方法,而如果对于对线程...

  • 多线程深入话题

    优雅的停止线程   在多线操作之中如果要启动多线程使用的是Thread类中的start()方法,而如果对于多线程需...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • 编程体系结构(05):Java多线程并发

    一、多线程导图 二、多线程基础 1、基础概念 线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的...

  • iOS多线程 NSOperation

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程 pthread、NSThread

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程: GCD

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程运用

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • iOS多线程基础

    系列文章: 多线程 多线程 pthread、NSThread 多线程 GCD 多线程 NSOperation 多线...

  • 线程常用操作方法

    多线程的主要操作方法都在Thread类中定义了; 线程的命名和取得 多线程的运行状态是不确定的,那么在开发过程之中...

网友评论

      本文标题:多线程之中断线程

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