采取类似下面的一个的ScheduledThreadPoolExecutor。你如何给执行者本身的时间窗口在那里可以推出新的线程。那段时间窗口之外,应立即停止以固定的速度推出新主题。
executor = new ScheduledThreadPoolExecutor(1);
executor.scheduleAtFixedRate(new Runnable(){}, 0, 1, TimeUnit.DAYS);
对于实施例1 <窗口<3S:
if executor has run for <= 1s stop launching thread
if executor has run for > 1s and < 3s. Start and keep launching thread
if executor has run for < 3s stop launching thread.
另外,如果执行者可以给予超时,这也将正常工作。注意我不是说给线程超时,但执行者本身。
我有在主题将时刻跟踪器本身的一个解决方案,但如果有这样做的更天然的方法,我想知道。
有没有“本地”的解决方案。 更好的方法是(只是我的想法抛)
Future<?>
(S)从scheduleAtFixedRate
返回ScheduledExecutor
Future<?>
(S)(未关闭执行人)/改变Executor
实现对即时的无操作定制版这有点不切实际。恕我直言,我认为你正在试图做的很漂亮,可以在更“标准”的方式来解决。