Java 关于关键部分
设想一种情况,多个进程试图使用一个共享资源 您可以使用java监视器(例如,同步方法)来保护它 但是如果您的类必须遵守该协议呢 请求方法-关键部分-结束方法 由于同步的块,任何进程都是唯一同时执行请求和结束方法的进程,但是关键部分的核心呢 使用信号量或Lock/Condition等其他构造,您可以轻松实现同步,但使用本机监视器,您将绑定到一个事实,即同步由一个不能跨多个方法的块标识 如果使用一个Java 关于关键部分,java,multithreading,native,monitor,Java,Multithreading,Native,Monitor,设想一种情况,多个进程试图使用一个共享资源 您可以使用java监视器(例如,同步方法)来保护它 但是如果您的类必须遵守该协议呢 请求方法-关键部分-结束方法 由于同步的块,任何进程都是唯一同时执行请求和结束方法的进程,但是关键部分的核心呢 使用信号量或Lock/Condition等其他构造,您可以轻松实现同步,但使用本机监视器,您将绑定到一个事实,即同步由一个不能跨多个方法的块标识 如果使用一个布尔值,告诉您资源是否正忙(紧接着调用wait()),死锁可能会发生 那么,有什么好的解决办法呢 想象
布尔值
,告诉您资源是否正忙(紧接着调用wait()
),死锁可能会发生
那么,有什么好的解决办法呢
想象一下这样一种情况
这有一个名称,它是一个长事务,如果您认为需要实现它,这表明可能是时候重新考虑您的设计了
为什么它不好,以及如何避免它是一个书本级的话题
这里有一本书很好地介绍了这一点:
你应该把这个问题分成两个独立的问题。你可以在这里选择一个问题提问,另一个问题留待以后再问。你甚至可以同时发布另一个问题。Do stuff->call synchronized method for the critical section->Do stuff你的问题很难阅读和理解。提供一些代码示例以澄清您的问题。完成。我将用另一个问题打开一条线索!谢谢你,对不起,原来的话题!