java interrupted_java线程中断interrupted方法的疑问?

首先不知道题主对线程有多少了解,java的线程机制简单点来说是对操作系统线程的一层封装,然后便于我们开发人员使用。因此,如果题主对操作系统的进程/线程有了解的话,那么学习java的线程机制或者上面提到的并发结构,会有很大的帮助。

// 以上这些是题外话,希望对题主你有帮助,下面开始根据我的理解来给我的答案,如果有错误的

// 地方欢迎指出来。

1。无论用if 或者 while,都是起到判断某种条件的作用。而题主所问到“对if或者while”的选择,主要得根据你当前线程的作用来决定的。假如你的线程得不断去等待/去检查某种条件是否已经完成了,那么这个时候你的代码如果只用if,那么代码就只能判断一次,相当于你这个线程对这个判断执行了一次结束了。相反,用while,就会不断判断是否已经达到条件,相当于你这个线程在不断地运行。

if (a == 1) {

// 业务代码

}

// 接下来的代码

//--------------------------------------------------

while(a == 1) {

// 业务代码

}

// 接下来的代码

//--------------------------------------------------

通过简单的代码来说,假如你的线程作用是“直到符合某种状态才能往下进行”,那么以上两种方式,用if,代码判断一次,完了就直接往下走了;而用while,就可以一直然线程忙等待,直到变量a不等于1了,代码才往下走。

所以我是通过了“作用”的方面来给你解答,如果有其他的解释,请告诉我一声,谢谢啦。

2。我不是很清楚题主的第二个问题的意思,我试下以我自己的理解来帮助解答下。

首先建议题主去看关于Thread.interrupted(),这个方法在API里面的介绍,JDK中的API已经给了我们很多有用的信息,以下是JDK8中的方法摘要:

Tests whether the current thread has been interrupted. The interrupted status of the thread is cleared by this method. In other words, if this method were to be called twice in succession, the second call would return false (unless the current thread were interrupted again, after the first call had cleared its interrupted status and before the second call had examined it).

//

java的线程机制,简单地说,你可以理解成在jvm专门有个线程管理器,这个线程管理器负责跟操作系统交互。流程就相当于:你 -> 线程管理器 ->操作系统。

当你调用Thread.interrupted()的时候,会通知线程管理器让它去告诉操作系统,让操作系统去中断当前线程(具体方式是线程管理器轮询其管理的每一个线程,判断其状态),而这个中断状态即the interrupted status 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值