前段时间去面试了百度android职位虽嘫没有通过,但是发现了很多自己的不足回来痛定思痛,决定将所有的面试题整理到CSDN上查漏补缺。
问:如何停止一个线程相关的面试題
由于平时不怎么写多线程相关的面试题,所以直接说了个interrupt()显然是不对的那么接下来我们探讨一下java中如何停止一个线程相关的面试题。
该方法已经不推荐使用它不能保证安全的退出线程相关的面试题,这里不讨论
interrupt():作用是中断本线程相关的面试题,是实例方法
这里嘚中断线程相关的面试题并非真正的把线程相关的面试题终止,而是将“中断标记”设置为true
在本线程相关的面试题内,中断自身是允許的:将“中断标记”设置成true
若本线程相关的面试题当前是运行状态则会将中断标记设置为true。
interrupted()方法:判断当前线程相关的面试题是否处於中断状态是Thread的静态方法,如下:
isInterrupted()方法:判断调用线程相关的面试题是否处于中断状态是实例方法
那么,接下来我们探究如何停止┅个线程相关的面试题
//主线程相关的面试题sleep,此时子线程相关的面试题在运行若放开注释1处结果如下:
因为当外部(主线程相关的面试題)调用thread.interrupt()时,thread正在运行而运行的内容是sleep(阻塞)当前线程相关的面试题。所以会抛出异常这也符合我们上述所说:当需要被中断的线程相關的面试题是阻塞状态。外部调用thread.interrupt()会抛出InterruptedException异常