Параллелизм через ExecutorService в Java - PullRequest
0 голосов
/ 03 января 2012

Я использую ниже функцию параллелизма Java 1.6 для выполнения некоторых задач в автономном режиме. Когда пользователь создается с помощью регистрации, мне нужно выполнить некоторую внутреннюю задачу регистрации, и я не хочу блокировать пользователя, поэтому я использовал приведенный ниже код

    java.util.concurrent.ExecutorService myservice = Executors.newSingleThreadExecutor();
    myservice.execute(new myTask(user));

Здесь у меня есть внутренний класс myTask, который реализует метод Runnable & in Run, я выполняю автономную деятельность (таким образом, делая это как неблокирующий вызов).

Теперь, когда пользователь входит на веб-сайт, возникают определенные действия (кнопки на веб-страницах), при нажатии которых мне нужно выполнять аналогичные автономные действия, и я не хочу делать вызов как блокирующий вызов. У меня есть 4 действия на этой странице, на которых мне нужно выполнять автономные задачи.

Можно ли использовать подобный код выше с 4 различными внутренними классами и выполнять в них автономную работу? Если нет, то какая альтернатива?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 января 2012

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

0 голосов
/ 03 января 2012

Вы можете использовать Исполнителей, если не ожидаете высокого уровня одновременных запросов. В этом случае используйте Пул потоков .

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

Ранее я успешно использовал Исполнителей с пулами в веб-приложении. Однако не рекомендуется создавать потоки в веб-приложении и не разрешать в EJB, так как потоки не управляются контейнером.

Пример

static final int POOL_SIZE=10;
ExecutorService pool = Executors.newFixedThreadPool(POOL_SIZE);

Вы также можете прочитать эту замечательную статью: Параллелизм Java

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