Java 跨不同线程和服务器维护同步数据库

Java 跨不同线程和服务器维护同步数据库,java,synchronization,singleton,Java,Synchronization,Singleton,我想我有点累了,所以如果这是一个愚蠢的问题,我道歉。假设我有以下代码: public void updatePrices() { synchronized (singleton_price_db) { singleton_price_db.modifyPrices(); singleton_propagator.propagatePricesToOtherServers(); }

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

    public void updatePrices()
    {
        synchronized (singleton_price_db)
        {

            singleton_price_db.modifyPrices();

            singleton_propagator.propagatePricesToOtherServers();
        }
    }
现在,当执行线程运行此代码时,它将锁定price db(singleton_price_db),然后通知singleton文件传播程序将更新的价格传播到其他服务器。但是,由于单例传播程序正在运行,我将不再拥有同步锁,对吗?如何处理呢?(我需要同步RAM上的修改价格和将其传播到其他服务器时的修改价格。我也不能让执行线程调用PropagatePriceTotherServers()方法,因为这将导致许多其他同步问题。)

编辑:我可以进一步阐述我试图做的事情,但使用我的设计可能不存在解决方案。本质上,我有两个线程,它们需要在数据结构周围有一个同步块。当第一个线程完成其任务时,它需要将同步块传递给传播程序线程(第二个线程),而不需要任何其他线程进行修改。如果不添加大量额外的机制,比如上面的管理器线程,我看不到立即的解决方案,所以这可能就是处理这个问题的方法