我正在寻找算法来设计Java中的多线程应用程序,其中每个线程将数据写入数据库。我想控制每秒写入 db 的记录数。
应用程序获取 RPS(每秒记录数)参数并大约生成那么多负载。
我正在寻找算法来设计Java中的多线程应用程序,其中每个线程将数据写入数据库。我想控制每秒写入 db 的记录数。
应用程序获取 RPS(每秒记录数)参数并大约生成那么多负载。
如果您可以使用外部库,番石榴有一个RateLimiter类,它可能会满足您的要求:
速率限制器通常用于限制访问某些物理或逻辑资源的速率。这与限制并发访问次数而不是速率的信号量形成对比。
您可以创建一个BlockingQueue
许可对象并拥有一个额外的帮助线程,该线程每秒一次将 RPS 数量的附加许可添加到队列中。写入线程在队列上阻塞并且在它们成功地从队列顶部弹出许可之前不写入。