interrupt,park/unpark,wait/notify

2021/9/21 23:15:05

本文主要是介绍interrupt,park/unpark,wait/notify,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

原创,请勿转载~

涉及到2个概念,许可证(permit)中断状态(interrupt status)
中断状态比较容易理解,每个线程都有一个中断状态的标识,调用interrupt方法,即可设置此标识。
许可证是park和unpark才牵扯到的概念。

如果有许可证,park立即返回,如果中断状态已设置,park也立即返回。
park会消耗许可证,不会清除中断状态
unpark会生成一个许可证
unpak可以在park之前先调用,生成一个许可证,之后调用park的时候回消耗掉这个许可证,并立即返回
每个线程,最多只有一个许可证,多次调用unpark,也只是生成一个许可证

wait和notify之间没有“许可证”这种概念
在wait之前的notify都是无效的。
如果中断状态已设置,则wait清除中断状态,并立即返回。

interrupt方法,不只设置中断状态这个标识,也会调用unpark方法。
因此,调用interrupt之后,此线程的中断状态被设置,且会生成许可证

wait,join,sleep都会清除中断状态,其余情况(park等),都不会清除中断状态



这篇关于interrupt,park/unpark,wait/notify的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程