我正在使用 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
}
}
}
}
我认为这不是最好的方法。
我在想的另一种方式是相反的,继续迭代数据库。
更新
感谢您提供有关计时器的反馈,但我认为它不会解决我的问题。一旦数据库中发生更改,我需要根据更改的值(示例代码中的“els”)几乎立即处理结果。
即使数据库没有改变,它仍然必须不断检查变化的值。
更新 2
好的,对于任何对答案感兴趣的人,我相信我现在有了解决方案。基本上解决方案不是为此使用数据库。加载、更新、添加等……只需要从数据库到内存。这样您就不必经常打开和关闭数据库,您只需在对数据库进行更改时处理数据库,并将这些更改反映到内存中,并且只处理当时内存中的任何内容。当然,这会占用更多内存,但性能在这里是绝对关键。
至于定期的“计时器”答案,我很抱歉,但这根本不对。没有人回应使用计时器将如何解决这种特殊情况的原因。
但是再次感谢您的反馈,尽管如此,它仍然很有帮助。