我有一个 ScheduledExecutorService,我想用它来安排具有一定延迟的 Runnable 的执行。但是,当我调用它的 schedule 方法时,延迟会被完全忽略,Runnable 会立即执行。这是我的代码:
我的 ScheduledExecutorService 构造函数:
private static ScheduledExecutorService existQueuePool = Executors.newScheduledThreadPool(1);
这是对其 schedule 方法的调用(由 Logs 包围):
Log.d(TAG,"Before schedule");
ScheduledFuture<?> mScheduledFuture = existQueuePool.schedule(new Runnable() {
@Override
public void run() {
Log.d(TAG,"Setting clearMessageTask for exist messages in the existQueuePool.");
clearMessageTask(mContext.getString(R.string.existType));
}
}, 1000L, TimeUnit.MILLISECONDS);
Log.d(TAG,"After schedule");
日志让我看到“在计划之前”和“设置清除...”之间只有 20-30 毫秒的延迟,而不是我预期的 1000 毫秒。
schedule 方法的文档如下:
创建并执行在给定延迟后启用的一次性操作。
在这种情况下,“启用”一词的确切含义是什么?
任何帮助将不胜感激。
编辑:即使使用 Long (1000L),代码似乎也会立即执行。