您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

控制ExecutorService每秒最多执行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个的速度处理。

其他 2022/1/1 18:25:16 有374人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶