0

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) を使用している場合でも、コードはすぐに実行されるようです。

4

1 に答える 1