无限循环数据库检查

2023-11-29

我正在使用 JDBC,需要不断检查数据库是否有更改的值。

我目前拥有的是一个无限循环运行,内部循环迭代不断变化的值,并且每次迭代都会检查数据库。

public void runInBG() { //this method called from another thread
    while(true) {
     while(els.hasElements()) {
      Test el = (Test)els.next();
       String sql = "SELECT * FROM Test WHERE id = '" + el.getId() + "'";
       Record r = db.getTestRecord(sql);//this function makes connection, executeQuery etc...and return Record object with values
       if(r != null) {
         //do something
       }
     }
    }
}

我认为这不是最好的方法。

我想到的另一种方法是相反的,继续迭代数据库。

UPDATE

感谢您有关计时器的反馈,但我认为这不能解决我的问题。 一旦数据库中发生更改,我需要几乎立即根据更改的值(示例代码中的“els”)处理结果。

即使数据库没有更改,它仍然必须不断检查更改的值。

UPDATE 2

好的,对于任何对答案感兴趣的人,我相信我现在有了解决方案。基本上解决方案不是为此使用数据库。仅将需要的内容从数据库加载到内存中、更新、添加等。 这样,您就不必不断打开和关闭数据库,只需在对数据库进行更改时才处理数据库,并将这些更改反映回内存中,并且只处理当时内存中的任何内容。 当然,这会占用更多的内存,但性能在这里绝对是关键。

至于定期的“计时器”答案,我很抱歉,但这根本不正确。没有人回答使用计时器如何解决这种特殊情况的原因。

但再次感谢您的反馈,它仍然很有帮助。


另一种可能性是使用ScheduledThreadPoolExecutor.

你可以实施一个Runnable包含你的逻辑并将其注册到ScheduledExecutorService如下:

ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
executor.scheduleAtFixedRate(myRunnable, 0, 5, TimeUnit.SECONDS);

上面的代码创建了一个ScheduledThreadPoolExecutor其池中有 10 个线程,并且会有一个Runnable注册到它将立即开始在 5 秒内运行。


要安排您的可运行程序,您可以使用:

固定费率安排

创建并执行一个周期性操作,该操作首先在给定的初始延迟后启用,然后在给定的时间段内启用;也就是说,执行将在initialDelay之后开始,然后是initialDelay+period,然后是initialDelay + 2 * period,依此类推。

固定延迟调度

创建并执行一个周期性操作,该操作在给定的初始延迟后首先启用,然后在一次执行终止和下一次执行开始之间具有给定的延迟。


And here你可以看到的优点ThreadPoolExecutor,以查看它是否符合您的要求。我建议这个问题:Java Timer 与 ExecutorService?也是为了做出正确的决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无限循环数据库检查 的相关文章

随机推荐

  • 当 Google 地图全屏为 true 时,Google 地图自动完成下拉菜单会隐藏

    我已经实现了谷歌地图 并在地图上覆盖了自动完成功能 并将 FullScreenControl 选项设置为 true 您可以在下图中右侧看到 FullScreenControl 我的问题是 当我通过单击 FullScreenControl 切
  • 从 PDFBox 中剥离时的文本坐标

    我正在尝试使用 PDFBox 从 pdf 文件中提取带有坐标的文本 我混合了在互联网上找到的一些方法 信息 也是stackoverflow 但是我的坐标问题似乎不正确 例如 当我尝试使用坐标在 tex 顶部绘制矩形时 该矩形会在其他地方绘制
  • 如何获取 JAXB 输出以将名称空间包含在没有前缀的子节点中?

    天知道我在论坛上搜索了答案 但没有看到任何答案 这是我的 JAXB 代码读取的简化 XML 涉及2个命名空间 xyz 和 abc 这两个是在两个不同的模式文件中定义的 xjc 为它们生成两个不同的包 以下文件可以很好地读入这些类 甚至可以写
  • 如何解压缩 AES-256 加密的 Zip 文件?

    我正在寻找一个在iPhone应用程序中使用的压缩库 支持解压缩AES 256 位内置档案Winzip压缩实用程序 Thanks zlib 是 iPhone sdk 的一部分 是一个成熟且免费的选项 如果您使用 Xcode 您可以通过以下方式
  • python 3 urllib 和 http.client - 无法打开调试消息

    您好 Stackoverflow 社区 我正在尝试熟悉 urllib request 标准库 并在工作脚本中使用它而不是 wget 然而 我无法在 IDLE 中 使用脚本文件或手动在 cmd py 中键入命令来获取显示的详细 HTTP 消息
  • Vuetify 组合框未更新为正确的值

    我有一个 Vuetify 组合框 在保存时会执行 api 调用来存储所选或输入的值 但是 在更新此值时 如果直接单击保存按钮而没有取消选择组合框 则会再次存储先前存储的值 而不是新值 仅当我手动取消选择该框或按 Enter 时 才会存储正确
  • Firebase:事务读取和更新多个文档

    使用此代码 我可以读取和更新事务中的单个文档 Update likes in post var docRef admin firestore collection posts doc doc id let post await admin
  • pyspark 将行转换为带有 null 的 json

    Goal 对于具有模式的数据框 id string Cold string Medium string Hot string IsNull string annual sales c string average check c strin
  • 如何在clip()之后在canvas中执行clearRect()?

    我需要在画布中执行clip 后执行clearRect 不幸的是 它对我不起作用 如果我排除 Clip 的意思 则clearRect 工作得很好 我需要在执行clip 后执行clearRect 这可能吗 请找到fidd
  • Scrum:任务依赖性和架构设计任务[关闭]

    Closed 这个问题是无关 目前不接受答案 我有一些 Scrum 问题 任务依赖性 我读过的大多数书籍似乎都将任务视为彼此独立的 一个程序员的任务不会影响另一个程序员的任务 因此可以并行运行 如何处理依赖于另一项任务的任务 任务基于故事
  • UIImagePickerControllerDelegate 未正确响应

    我在 iPhone 3Gs 上使用 iOS 4 2 1 中的 UIImagePickerController 我之前使用过已弃用的方法 void imagePickerController didFinishPickingImage edi
  • 使用事件处理程序更改背景颜色

    我正在尝试创建一个简单的表单 其中将三个 div 堆叠在一起 单击每个框时 它们的颜色需要更改 一红 一绿 一蓝 我只需要使用一个事件处理程序来完成此操作 我被我的代码困住了 我希望你们中的一位能指导我完成这个任务 我真的很感激 这是我的代
  • MIPS 装配标签

    MIPS 的组件会读取每个标签吗 忽略任务和语法 我只是快速地将一些东西放在一起 add reg3 reg1 zero add reg1 reg1 reg2 beq reg1 reg3 BRANCH1 reg2 contents are z
  • 如何在 Windows 机器上的 Python 3.4 中安装 lxml

    我已经花了几个小时在这上面 我是 Python 新手 不知道解决方案是什么 我有 Python 3 4 并且想要使用 docx 这需要lxml 到目前为止我所做的工作流程是 我转到Pythonlxml软件包安装程序页面 但很难知道我需要哪个
  • MongoDB 中的 $unwind 运算符是什么?

    这是我使用 MongoDB 的第一天 所以请慢慢来 我无法理解 unwind接线员 也许是因为英语不是我的母语 db article aggregate project author 1 title 1 tags 1 unwind tags
  • 使用 Jquery 和 '.css' 的 CSS 动画

    所以我有一段代码 目的是播放从中选择的动画动画 css on click The code container gt parent click function element css animation fadeInUp 2s webki
  • 如何重新发送失败的ajax请求?

    我有多个 ajax 请求 每分钟有一些请求数据 其他请求由用户通过 ui 发起 get myurl data done function data do stuff 由于身份验证失败 请求可能会失败 我已经设置了一个全局 ajaxError
  • 如何排除故障 - ImportError: 部署 django 时无法导入设置“mysite.settings”?

    我已经根据 apache 部署说明部署了 django 应用程序 并且与 apache 和 mod python 完美配合 但由于我稍微改变了项目结构 我一直无法让它工作 无论我尝试什么 我都会不断收到以下页面 MOD PYTHON ERR
  • 段落行上单独的背景颜色 - CSS

    I am trying to add background color on lines of title But I can t make it perfect as my client needs me to do My client
  • 无限循环数据库检查

    我正在使用 JDBC 需要不断检查数据库是否有更改的值 我目前拥有的是一个无限循环运行 内部循环迭代不断变化的值 并且每次迭代都会检查数据库 public void runInBG this method called from anoth