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