我想我有点老了,所以如果这是一个愚蠢的问题我会道歉。假设我有以下代码:
public void updatePrices()
{
synchronized (singleton_price_db)
{
singleton_price_db.modifyPrices();
singleton_propagator.propagatePricesToOtherServers();
}
}
现在,当执行线程运行此代码时,它将锁定价格db(singleton_price_db),然后提醒单件文件传播器将更新后的价格传播到其他服务器。但是,当单身传播器正在运行时,我将不再拥有同步锁,是吗?怎么办呢? (我需要同步RAM上的修改价格,因为它正在传播到其他服务器。我不能让执行线程调用propagatePricesToOtherServers()方法,因为这会导致其他主机同步问题。)
编辑:我可以详细说明我正在尝试做些什么,但使用我的设计可能不存在解决方案。本质上,我有两个线程需要在数据结构周围有一个同步块。当第一个线程完成其任务时,它需要将同步块传递给传播器线程(第二个),而不必从任何其他线程进行修改。如果没有添加大量额外的机制,比如一个覆盖的经理线程,我看不到立即解决方案,因此可能就是如何处理这个问题。