2016-11-04 1 views
2

Я запускаю службу генерации большого файла (это отчет в BIRT) в Java-обратном коде, и это занимает много времени, и мой вопрос заключается в том, как наилучшим образом управлять им с помощьюJava Thread для фоновых сервисов в приложении Java EE (установить демон и приоритет)?

daemon = правда или демон = ложь

и приоритет

new Thread(new Runnable() { 
       public void run(){ 
        try { 
        task.run(); 
        engine.destroy(); 
        } 
        catch (EngineException e1) { 
         System.err.println("Report " + reportFilepath + " run failed.\n"); 
         System.err.println(e1.toString()); 
        } 
       } 
     }).start(); 
+0

Возможный дубликат [Что такое поток Демона в Java?] (Http://stackoverflow.com/questions/2213340/what-is-daemon-thread-in-java) – Reinard

+0

Я знаю разницу, но я не знаю, что является лучшим выбором в приложении Java EE и какой приоритет используется – chuyleonel

+0

Нет «лучшего выбора», это зависит от ваших требований. – Reinard

ответ

0

Существует только одна разница между демоном нитью и обычной теме: существование нормальной, выполняющегося потока будет препятствовать JVM от закрытия себя вниз , но существование работающего потока демона не будет. Не влияет на производительность

+0

и какой приоритет вы порекомендуете мне в приложении java ee? – chuyleonel

+0

По умолчанию я бы оставил его как обычно. Если нет реальной причины его изменения. В следующей статье вы найдете достойную работу по разъяснению влияния изменения приоритета на Windows или Linux без углубленного изучения. http://www.javamex.com/tutorials/threads/priority_what.shtml – Reinard

+0

отлично спасибо – chuyleonel

1

Создание new Thread() s в Java EE считается плохой практикой. Вместо этого вы должны использовать такую ​​услугу, как ManagedExecutorService (MES), и отправлять ее в нее.

Преимущество использования MES над запуском собственных потоков заключается в том, что ресурсы, используемые MES, могут контролироваться сервером приложений Java EE.

Теперь, чтобы ответить на ваш вопрос о потоках и приоритетах демона.

daemons: Отправка задач в MES всегда не блокируется, и результат задачи может быть дополнительно проверен, поэтому это существенно заставляет эти задачи выполнять потоки демона.

приоритет: не существует стандартного способа Java EE, который я знаю для управления приоритетом потока. Вам нужно будет проверить свою реализацию сервера приложений, чтобы узнать, есть ли свойства, которые вы можете передать во время отправки задачи, чтобы указать приоритет потока.

+0

отличный ответ спасибо – chuyleonel

Смежные вопросы