有关关键部分的事情

时间:2017-01-26 23:03:26

标签: java multithreading native monitor

想象一下多个进程尝试使用共享资源的情况。

您可以使用java监视器(例如 - synchronized方法)来保护它。

但是如果你的课程必须遵守该协议怎么办?

请求方法 - 关键部分 - 结束方法

由于同步块,任何进程都是同时执行请求和结束方法的进程,但是关键部分的核心是什么?

使用其他结构(如信号量或锁定/条件)可以轻松实现,但使用本机监视器时,您会发现同步由不能跨越多个方法的块标识。

如果您使用boolean告诉您资源是否正忙(之后立即调用wait()),则可能发生死锁!

那么,对此可能是一个很好的解决方案呢?

1 个答案:

答案 0 :(得分:0)

  

想象一下......

的情况

有一个名称,它是长事务,如果你认为你需要实现它,那就表明它可能是时候重新思考你的设计了。

为什么它很糟糕,如何避免它是一本书级主题。

这是一本很好地介绍它的书:

https://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420