我已经看到问题如何确定对象是否被锁定(同步)以便在 Java 中不阻塞?
但我有一个我无法解决的问题。
在我的 Web 应用程序中是刷新数据容器的过程,这可能需要很长时间。强制按时间间隔进行刷新。当然,当一个刷新仍在容器上工作时,另一个不能(不破坏容器中的数据)。
我想使用后台线程来刷新容器。多个后台工作人员可以同时在多个容器上工作(不同的工作人员用于不同的用户会话,每个用户会话在其容器中可以有不同的数据)。
我当然可以synchronize(myContainer)
在 worker 中强制任何其他 worker 当前没有更新这个特定的容器。但我更想检查是否有任何工作人员正在处理容器并退出,如果是的话。另外我不想更改容器的代码,所以我不想在容器类中添加 ReentrantLock 并锁定它。
所以工人有MyContainer
实例并想确定是否有任何其他工人当前正在刷新这个容器实例。
任何想法如何实现这一目标?