在不同的线程和服务器上维护同步数据库

时间:2012-05-15 00:59:03

标签: java synchronization singleton

我想我有点老了,所以如果这是一个愚蠢的问题我会道歉。假设我有以下代码:

    public void updatePrices()
    {
        synchronized (singleton_price_db)
        {

            singleton_price_db.modifyPrices();

            singleton_propagator.propagatePricesToOtherServers();
        }
    }

现在,当执行线程运行此代码时,它将锁定价格db(singleton_price_db),然后提醒单件文件传播器将更新后的价格传播到其他服务器。但是,当单身传播器正在运行时,我将不再拥有同步锁,是吗?怎么办呢? (我需要同步RAM上的修改价格,因为它正在传播到其他服务器。我不能让执行线程调用propagatePricesToOtherServers()方法,因为这会导致其他主机同步问题。)

编辑:我可以详细说明我正在尝试做些什么,但使用我的设计可能不存在解决方案。本质上,我有两个线程需要在数据结构周围有一个同步块。当第一个线程完成其任务时,它需要将同步块传递给传播器线程(第二个),而不必从任何其他线程进行修改。如果没有添加大量额外的机制,比如一个覆盖的经理线程,我看不到立即解决方案,因此可能就是如何处理这个问题。

0 个答案:

没有答案