想象一下多个进程尝试使用共享资源的情况。
您可以使用java监视器(例如 - synchronized方法)来保护它。
但是如果你的课程必须遵守该协议怎么办?
请求方法 - 关键部分 - 结束方法
由于同步块,任何进程都是同时执行请求和结束方法的进程,但是关键部分的核心是什么?
使用其他结构(如信号量或锁定/条件)可以轻松实现,但使用本机监视器时,您会发现同步由不能跨越多个方法的块标识。
如果您使用boolean
告诉您资源是否正忙(之后立即调用wait()
),则可能发生死锁!
那么,对此可能是一个很好的解决方案呢?
答案 0 :(得分:0)
想象一下......
的情况
有一个名称,它是长事务,如果你认为你需要实现它,那就表明它可能是时候重新思考你的设计了。
为什么它很糟糕,如何避免它是一本书级主题。
这是一本很好地介绍它的书:
https://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420