Java EE WebListener и Поток - PullRequest
       30

Java EE WebListener и Поток

2 голосов
/ 05 марта 2012

У меня есть сервлет, помеченный как @WebListener.

  public void contextInitialized(ServletContextEvent event) {                
        schedulerEngine = Executors.newSingleThreadScheduledExecutor();
        schedulerEngine.scheduleAtFixedRate(new Batch1(), 0, MILLISECONDS_ITERATE_PA, TimeUnit.MILLISECONDS);
        schedulerEngine.scheduleAtFixedRate(new Batch2(), 0, MILLISECONDS_ITERATE_IAS, TimeUnit.MILLISECONDS);
        schedulerEngine.scheduleAtFixedRate(new Batch3(), 0, MILLISECONDS_ITERATE_EV1, TimeUnit.MILLISECONDS);
        schedulerEngine.scheduleAtFixedRate(new Batch4(), 0, MILLISECONDS_ITERATE_MV1, TimeUnit.MILLISECONDS);
        schedulerEngine.scheduleAtFixedRate(new Batch5(), 0, MILLISECONDS_ITERATE_BB, TimeUnit.MILLISECONDS);
        schedulerEngine.scheduleAtFixedRate(new Batch6(), 0, MILLISECONDS_ITERATE_EV, TimeUnit.MILLISECONDS);
    }

public class BatchX implements Runnable {
        @Override
        public void run() {
         ....
        }
}

MILLISECONDS_ITERATE_XX = 60000 (1 минута).

Возможно ли, что какой-то поток остановит себя из-за проблем с памятью?

Если в моем методе BatchX() run у меня есть исключение (например, NullPointerException), поток остановится навсегда?

1 Ответ

1 голос
/ 05 марта 2012

Блок кода всегда может быть прерван исключением. Является ли это смертельным или нет, зависит от того, какие меры вы принимаете для предотвращения или восстановления после них:

  1. Для проверенных исключений, например IOException, вам нужно будет поместить код восстановления и / или регистрации в ваш блок catch, а затем решить, хотите ли вы выйти из метода или продолжить выполнение.
  2. В случае непроверенных исключений, например, NullPointerException Лучше всего их предотвратить, а не перехватить, например, убедившись, что ни один объект не может быть нулевым, когда вы пытаетесь получить к нему доступ, или что ни один индекс не может превышать границы массива при итерации и т. Д.

Редактировать: Чтобы ответить на ваш конкретный вопрос, Javadoc говорит:

Если при выполнении какого-либо задания возникает исключение, последующее казни подавлены. В противном случае задача будет завершена только через отмена или увольнение исполнителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...