目前我有一个 ScheduledThreadPoolExecutor,它可以以固定速率执行可调用对象。
scheduledThreadPoolExecutor.scheduleAtFixedRate(callable, delay, waitNano, TimeUnit.NANOSECONDS);
我的团队想要在 waitNano 中添加一些随机性。目前它是 1000。但是我们希望等待秒数为 900、1100、800、1200,例如。平均等待时间仍然是 1000,但等待秒数是随机分布的(例如,像贝尔曲线)。
我想知道这个功能已经在java中了吗? 如果我必须编写自己的具有这种随机等待行为的“调度程序”,你们有什么建议?
非常感谢!
埃尔本
最佳答案
以固定计划(例如10分钟)调用另一个Runnable
,并让它随机配置随机调度程序的下一次执行,仍然管理随机性
使用 schedule();
例如:第一列显示固定调度程序的执行,它确定何时执行托管随机调度程序
0 1
5 7
10 11
15 18
关于java以伪 'fixed'速率安排可调用(例如钟形曲线分布),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30707556/