同步块 - Java

2019年7月19日 70点热度 0条评论 来源: Hari

我意识到在Java中提供的同步块基本上是一个可重入互斥体的实现。但是,同步块原子?同步块 - Java

那么如何处理当前在同步块内执行的线程的中断 - 是否通过恢复到目前为止所做的所有更改来释放锁?

编辑:至于问题的中断部分 - 它如何通常在Java中处理。例如,我看到很多java代码示例,其中开发人员在某个线程处于等待队列中时(例如)会捕获中断。但是,在catch块中,他们所做的只是打印中断。我对这个线程实际发生了什么感到好奇吗?它是否从等待队列中删除?

===========解决方案如下:

- 原子

synchronized块有助于实现原子 - 但他们的数据操作无法garaunteed是原子的。要使同步块中的内容成为原子,通常使用原子数据结构,如getter和setter,例如AtomicBoolean。

有一个伟大的原子类的聚宝盆,像原子诠释数组,由最新的Java版本支持。

- 处理中断的方式:

中断中未明确通过同步处理 - 同步块只有gaurantee,虽然执行时,该块不能由另一个线程重新输入。

    原文作者:Hari
    原文地址: https://stackoverflow.com/q/7669418
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。