Runnable の実行を特定の遅延でスケジュールするために使用したい ScheduledExecutorService があります。ただし、そのスケジュール メソッドを呼び出すと、遅延は完全に無視され、Runnable は即座に実行されます。これは私のコードです:
私の ScheduledExecutorService コンストラクター:
private static ScheduledExecutorService existQueuePool = Executors.newScheduledThreadPool(1);
これはそのスケジュール メソッドの呼び出しです (ログで囲まれています)。
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");
ログを見ると、予想していた 1000 ミリ秒ではなく、「スケジュール前」と「設定クリア...」の間に 20 ~ 30 ミリ秒の遅延しかないことがわかります。
スケジュール メソッドに関するドキュメントには次のように書かれています。
指定された遅延後に有効になるワンショット アクションを作成して実行します。
このコンテキストで「有効にする」という用語は正確には何を意味しますか?
どんな助けでも大歓迎です。
編集: Long (1000L) を使用している場合でも、コードはすぐに実行されるようです。