软件构造课堂延伸(3) java线程中断

java中的interrupt是中断一个线程的意思,不过中断一个线程并不是终止一个线程。

在Core Java中有这样一句话:“没有任何语言方面的需求要求一个被中断的程序应该终止。中断一个线程只是为了引起该线程的注意,被中断线程可以决定如何应对中断 ”。这句话隐晦地说明了在外部直接终止一个线程是不好的事情,可能会导致一些错误。

而所谓的引起注意,只是把线程的中断状态给修改了。(获取线程的中断状态用isinterrupted()方法)

值得注意的是,对于一个处在阻塞状态的线程来说,在将中断标志设置为true后,还会进行下面的操作:如果是wait、sleep以及jion三个方法引起的阻塞,那么会将线程的中断标志重新设置为false,并抛出一个InterruptedException。抛出异常后,便可以根据需要做出相应的处理。

总而言之,调用线程类的interrupt()方法,其本质只是设置该线程的中断标志,将中断标志设置为true,并根据线程状态决定是否抛出异常。因此,通过interrupt()方法实现线程终止的核心思想是:开发人员根据中断标志的具体值,来决定如何以及是否退出线程。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭