gpt4 book ai didi

java - 控制ExecutorService每秒最多执行N个任务

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:51 27 4
gpt4 key购买 nike

如何控制/限制提交给 ExecutorService 的任务?我有发送 SMS 消息的 SMSTask,我需要控制执行器,以便它每秒最多只能发送 N 条消息。

最佳答案

假设您为每个任务创建一条 SMS 消息,您可以使用 ScheduleExecutorService。

final Queue<Task> tasks = new ConcurrentLinkedQueue<Task>();
int ratePerSecond = 10;
final ExecutorService es = Executors.newCachedThreadPool();
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
final Task task = tasks.poll();
if (task == null) return;
es.submit(new Runnable() {
@Override
public void run() {
process(task);
}
});
}
}, 0, 1000/ratePerSecond, TimeUnit.MILLISECONDS);

将任务添加到队列中,它们将以每秒 10 个的速度处理。

关于java - 控制ExecutorService每秒最多执行N个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13290825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com