【问题标题】:Data share between different threads不同线程之间的数据共享
【发布时间】:2011-05-27 18:38:04
【问题描述】:

我有一个锁定方法(ReentrantLock),该方法向服务器发送一些消息,立即接收响应并在数据库中创建/保存数据。 此响应具有已发送消息的 ID。客户端有一个正在等待来自服务器的报告的侦听器(此报告可以在数据发送到服务器后返回),服务器也可以返回某种报告(带有 id 和一些状态),我需要将该报告(按 id)映射到以前保存的记录和该记录的更改状态字段。

问题是这个报告可以更快地返回(并且监听器会抓住它并尝试处理)然后来自第一个方法的消息保存在数据库中。 解决这个问题的方法是什么?

我有想法在数据库中创建额外的表,并将消息中的数据保存在一个表中,并将报告中的数据保存到另一个表中。然后通过其他进程同步它们,但也许可以创建一些缓冲区/队列,其中消息 id 将从第一种方法存储,当我们收到报告时,我们将检查该缓冲区/队列以获取相应的消息 id 以及是否找到该消息id,那么那个报告监听器会继续它的工作吗?

【问题讨论】:

    标签: java multithreading concurrency


    【解决方案1】:

    我认为最好将报告和消息分别存储在数据库中,然后再将它们链接起来。假设你的数据库做了它的用途,这减少了数据丢失的机会。此外,您让 DB 完成锁定/同步的艰巨任务,通常它们非常擅长此操作。

    【讨论】:

      【解决方案2】:

      我会将数据存储在数据库中,当您想向另一个系统发送消息以读取该数据时,请使用 JMS 发送消息。这样,您可以确保在第二个系统收到消息时所有数据都可用。第二个系统只需要收听消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多