Har*_*ari 7 java multithreading mutex
我意识到Java中提供的synchronized块基本上是一个可重入的互斥锁的实现.然而,同步块原子?
那么如何处理当前在synchronized块中执行的线程的中断 - 它是否只是通过还原到目前为止所做的所有更改来释放锁定?
编辑:关于问题的中断部分 - 它通常如何用Java处理.例如,我看到许多java代码示例,其中开发人员在(例如)线程处于等待队列中时捕获中断.然而,在catch块中,他们所做的只是打印已经引发的中断.我对这个线程究竟发生了什么更好奇?它是从等待队列中删除的吗?
-- 原子性
同步块有助于实现原子性 - 但它们的数据操作不能保证是原子性的。为了使同步块中的内容成为原子的,您经常使用原子数据结构,例如 getter 和 setter,例如 AtomicBoolean。
最新的 java 版本支持大量很棒的原子类,例如原子 int 数组。
-- 如何处理中断:
同步不会显式处理中断 - 同步块仅保证在执行时该块不能被另一个线程重新进入。