Как могут создавать мультитрэды в Java США?

Java возможный создавать мультитрэды в контейнере США как GlassFish? Мое намерение состоит в том, чтобы создавать приложение, где пользователи могут бросать задержания данных об общественной сети, тогда каждый пользователь бросил бы новый трэд с параметрами, которые он желает, чтобы возвращать информацию об общественной сети. Все эти трэды были бы ограничены в числе, чтобы не истощать память сервера.

Как я могу создавать несколько трэдов в Java США, и что эти как только пользователь выходит из приложения остались в выполнении на втором плане до тех пор, пока пользователь не закроет их?

Решение может быть job GlassFish?

1
задан 12.04.2016, 17:44
1 ответ

В зависимости от твоего типа приложения, ты можешь производить трэды вручную, или что контейнер произвел их и управлял из-за тебя. Обычно последуй за вторым случаем, где контейнер, для твоего случая GlassFish, создает их, управляй и закончись, обслужив просьбу пользователя, это, просьба HTTP.

Если ты имеешь в виду, если ты можешь создавать трэды в servlet, да ты можешь, но он не рекомендуется, так как этим трэдом не будет управлять сервер приложений, так что любую работу управления ресурсов, мониторинга и другие характеристики они будешь должен осуществлять ты сами. Кроме того, очень легко разрушать твое приложение, реализовав этот тип действий. Равный здесь у тебя есть пример (крайне основной, приспосабливать это к твоей необходимости, не использовать такой код в производстве):

@WebServlet("ruta")
public class MiServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws Exception {
        new Thread( () -> System.out.println("hello world from thread") ).start();
    }
}

С другой стороны, у тебя есть Enterprise Java Bean, также такие знакомые как EJBs. В спецификации EJB он объясняет себе, что не позволено открывать трэды в этих компонентах. Использовать код, сходный с объясненным наверху в EJB закончится исключением.

Для твоего случая, что подошло бы тебе, состояло бы в том, чтобы использовать архитектуру из-за сообщений как JMS. Коммуникация из-за JMS асинхронная, так что сервер приложений откроет трэд из-за тебя после того, как будет инициализировать коммуникацию, и который быть должен обслуживать просьбу. Ты можешь добиваться этого через EJB типа @MessageDriven, как он появляется в этом руководителе: Java США 7 - JMS 2.0 Вит Глассфис v4. Я не могу поставлять примеры моей головы для этого случая, так как я это не работал с GlassFish а с JBoss, Включила такой MQ как драйвер очередей и Спринг.

3
ответ дан 24.11.2019, 14:36
  • 1
    Спасибо за ответ. Но одна из вещей, в которой я нуждаюсь, состоит в том, чтобы эти трэды не закрылись как только он заканчивает просьбу пользователя, но они будут постоянно в выполнении. Если пользователь выходит из приложения трэд, он должен оставаться в функционировании. Единственное реальное решение я думаю, что это - API Скопления Java ee 7 – Ivan Garcia Miranda 13.04.2016, 19:25
  • 2
    @IvanGarciaMiranda то, что я комментирую тебе, решает JMS. Он открывает эти трэды и управляет сервером приложений и оставаться и # 225; n работая способа схвати и # 237; ncrona в функциональность, которую попросил пользователь. Трэд заканчиваться и # 225; когда задание, ассоциируемое с этой очередью закончит Ваш ejecuci и # 243; n, так что он выполняет то, что ты просишь. Ты рекомендовать и # 237; чтобы читать м и # 225; s на этой теме. –  13.04.2016, 22:42

Теги

Похожие вопросы