を使用しており、 のリストを格納するバッファとして機能SpringMVC
するクラスを持っています。リストのサイズが1000に達した後、すべてのクエリをデータベースに書き込みます。AService
String
@Service
class AService {
List<String> list;
public void addAndInsert(String query) {
list.add(query);
if(list.size() >= 1000) {
writeIntoDatabase(list);
list.clear();
}
}
}
これは、スレッドが 1 つしかない場合にうまく機能します。しかし、さまざまなユーザーからクエリを呼び出すことができることがわかっているので (もちろんマルチスレッドです)、これが適切に機能することを保証するにはどうすればよいでしょうか。
クエリが 1000 に達したら、別のスレッドを使用してデータベースへの書き込みを実行したいと思います。この手順は長くなる可能性があるため、クエリに関係のないことをユーザーに待たせたくありません。
クエリが失われたり、複製されたりすることはありません。
このシナリオにどのように対処すればよいか、どのList
クラスの実装を使用すればよいか教えてもらえますか? ありがとう!