ScheduledExecutorService: когда следует вызывать завершение работы?

Я использую ScheduledExecutorServiceв своем приложении. Мне нужно время от времени использовать его в определенном классе Utility для запуска запланированных потоков.

Хорошо ли хранить ScheduledExecutorServiceв статическом поле? Нужно ли в таком случае вызывать ScheduledExecutorService.shutdown()? Каков риск, если я не вызову завершение работы?

Вот что я подумал сделать:

private static ScheduledExecutorService exec = Executors.newScheduledThreadPool(5);

public void scheduleTask(String name) {
        Future<?> future = futuresMapping.get(name);
        if(future!=null && !future.isDone())
            future.cancel(true);

        //execute once   
        Future<?> f = scheduledExecutor.schedule(new MyTask()), 1, TimeUnit.MINUTES);
        futuresMapping.put(name, f);
}

Спасибо

12
задан informatik01 21 October 2013 в 03:06
поделиться