私は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
}
}
}
}
これは最善の方法ではないと思います。
私が考えているもう 1 つの方法は、逆で、データベースを反復処理し続けることです。
アップデート
タイマーに関するフィードバックをありがとうございますが、それで問題が解決するとは思いません。データベースで変更が発生すると、変更された値 (サンプル コードの「els」) に対してほぼ瞬時に結果を処理する必要があります。
データベースが変更されない場合でも、変更された値に対して常にチェックする必要があります。
更新 2
OK、答えに興味がある人には、今すぐ解決策があると思います。基本的に、解決策はこれにデータベースを使用しないことです。読み込み、更新、追加など...データベースから必要なものだけをメモリに保存します。そうすれば、データベースを頻繁に開いたり閉じたりする必要がなく、データベースに変更を加えたときにのみデータベースを処理し、それらの変更をメモリに反映して、その時点でメモリ内にあるものだけを処理します。確かにこれはより多くのメモリを消費しますが、ここではパフォーマンスが絶対的な鍵となります。
定期的な「タイマー」の回答については、申し訳ありませんが、これはまったく正しくありません。タイマーの使用がこの特定の状況をどのように解決するかについて、誰も答えていません。
しかし、フィードバックをありがとう、それにもかかわらず、それはまだ役に立ちました.