我正在寻找一个好的解决方案或者可能是一个 API 来解决以下问题:
- 我的应用程序循环执行一项任务,例如发送电子邮件等。我需要将消息的平均速率限制为例如每秒 100 条消息或每最后一分钟 1000 条消息......
不,我正在寻找一种算法或 API 来完成此任务。
您可以使用预定执行服务 http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html安排给定时间段内的任务。
例如,要每秒安排 100 个任务,您可以这样说:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(nThreads);
scheduler.scheduleAtFixedRate(mailSender, 0, 10, TimeUnit.MILLISECONDS);
显然,您需要跟踪已执行的任务数量,并在作业完成后关闭调度程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)