私は2つの方法を持っており、それぞれが異なるThread
によって実行されています。2つのメソッドの同時実行を避けるにはどうすればよいですか?
public synchronized ResultSet dbExecuteQuery(String queryStmt);
public synchronized void dbExecuteUpdate(String queryStmt);
実行が「重複」しないようにするにはどうすればよいですか?
public synchronized ResultSet dbExecute(String queryStmt, boolean isUpdate) {
if (isUpdate) {
dbExecuteUpdate(queryStmt);
return null;
} else
return dbExecuteQuery(queryStmt);
}
しかし、それは私がプロジェクト全体で使用されるすべてのコードを変更する必要があります意味:私の心に来る
一つの解決策は、次のようです。それを行うクリーナーの方法はありますか?
あなたの最初のスニペットだけで結構です(両方のスレッドが自分のクエリを実行するために同じオブジェクトを使用して)。あなたは同期が何をしていると思いますか? –
しかし、リレーショナルデータベースには**同時クエリーを安全な方法で実行できるようにするACIDトランザクションがあります。あなたはそれらを同期しません。とにかく、いくつかのクライアントが同じデータベースをターゲットとするとすぐには動作しません。 –