首页 > 解决方案 > 我可以在我的 java 程序中运行一个无限循环来检查第三方是否在数据库中做了一些更改

问题描述

我正在用java设计一个程序并使用mysql作为数据库。该程序允许多个用户连接到数据库。

该程序的一个重要部分是立即更新用户,另一个人在特定表中进行了更改,这将使用户执行操作,因此更改将显示在他的最后。

我想在一个套接字上监听,但我无法解决多个用户的概念以及发送者将如何通知特定用户而不是整个组

这类似于短信

所以我要做的是运行一个每 10 秒运行一次的 while 循环,以稍微提高性能,并根据我用来登录的用户名检查表,这将得到我想要的,但我知道它是效率不高

有任何想法吗 ???

标签: javamysqlinfinite-loopmultiple-users

解决方案


在数据库表中使用“版本控制”模式。添加每次更新表时递增的数字列,例如:

alter table users add version_number bigint:

然后,每次更新行时,您也应该增加此值:

update users
  set my_value = ...,
    version_number = version_number + 1 -- include this change
  where id = 1234

这样,每个客户端都会记住他们看到的最后一个 version_number 。如果他们发现了不同的版本号,则发生了变化,因此应该采取行动。


推荐阅读