3

ScheduledThreadPoolExecutorでタスクを作成し、ThreadFactory クラスで以下のように Future をリストに追加しています。

private static List<Future> futures;
........
ScheduledFuture sf = executor.scheduleAtFixedRate(obj, delayInMilliSec, repeatPeriod, TimeUnit.MILLISECONDS);

futures.add(sf);

すべてのタスクをキャンセルしたいときは、以下のようにします

public void cancelAllTasks(){

  Iterator<Future> fi = futures.iterator();

  while(fi.hasNext()){

     fi.next().cancel(true);
  }

}

後でこれらのタスクを再開するにはどうすればよいですか?

4

2 に答える 2

3

フューチャがキャンセルされると、後の段階でタスクを復活させることはできません。javadoc をざっと見てみると、Future のコントラクトについて説明されています。

タスクを再開するには、executor で再度スケジュールします。

于 2013-10-03T05:41:41.250 に答える
2

AFAik できません。スケジュールを変更する必要があります

于 2013-10-03T00:55:56.603 に答える