编程技术分享平台

网站首页 > 技术教程 正文

「浅谈Java」2,interrupt,interrupted和isInterrupted的区别

xnh888 2024-10-30 04:45:17 技术教程 21 ℃ 0 评论

【浅谈Java】主要针对Java开发技术知识的讲解。不会大而全详细讲解某一技术知识,只在短暂无事的时刻让你学习或温习Java知识体系中的一叶飘零。

1,interrupt

public void interrupt() 中断这个线程。

线程中断仅仅是置线程的中断状态位为true,不会停止线程。interrupt()后立即isInterrupted()主动检查中断状态位一定为false。所以interrupt()中断效果取决程序自身实现,即interrupt()执行后需要额外的编码才能中断线程。最简单方法抛出InterruptedException异常。

interrupt()最有意义的作用:线程受到阻塞时抛出一个中断信号,该线程就会退出阻塞状态。至于线程阻塞状态jdk文档有详细的描述,wait、join和sleep方法调用,I / O操作InterruptibleChannel和Selector选择器等。

2,interrupted

public static boolean interrupted() 中断当前正在运行的线程;

本方法其效果于当前线程。注意当前线程不是调用该方法的对象所在线程。该方法不仅能中断线程而且还能清除中断状态。连续调用两次该方法,第二次调用返回false(true如果当前线程已被中断; false否)。

该方法是类型的静态方法。

3,isInterrupted

public boolean isInterrupted() 测试这个线程是否被中断。

测试这个线程是否被中断。 线程的中断状态不受此方法的影响。

本方法和上面的interrupted()方法内部都是调用于private native boolean isInterrupted( boolean ClearInterrupted)本地方法。不同之处是interrupted()调用时传入的参数ClearInterrupted值是true,isInterrupted()调用时传入的参数ClearInterrupted值是false。效果就是interrupted()清除中断状态,isInterrupted()返回当前状态。

与第一篇文章之间相距2周时间,但笔者没有忘记,尽管工作和家庭占据生活中大部分时间,第二篇【浅谈Java】还是来了。学习是冰冻三尺非一日之寒,愿与诸君共勉励。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表