Jetty Java EE ExecutorsService

У меня есть веб-приложение, созданное и работающее на Jetty. Я использовал ExecutorService для создания
нового пула потоков, подобного этому,

ExecutorService es = Executors.newFixedThreadPool(10);

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

Итак, как я могу сделать это в Jetty.

Простите меня, я новичок в Jetty и заранее спасибо

Вот программа,

public class SampleExecutors {

    public SampleExecutors() {
        ExecutorService executors = Executors.newFixedThreadPool(10);
        Callable<List<Map<Record,String>>> text = new TextSearcher(domain, searchText);
        Future<List<Map<Record,String>>> submit = executors.submit(text);
        executors.shutdown();
    }
}

log.info("Active threads count:"+Thread.activeCount());

Здесь, после того как созданные рабочие потоки завершат свою задачу, я вызываю executors.shutdown()

но тем не менее, если я делаю Thread.activeThreads(), я вижу созданные потоки.

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

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


person mani_nz    schedule 05.09.2013    source источник


Ответы (1)


Afaik jetty — это не AS, а простой веб-сервер с контейнером сервлетов. Написание многопоточного кода в контейнере сервлетов — это нормально.
Дальнейшее чтение:
Разница между каждым экземпляром сервлета и каждым потоком сервлета в сервлетах?
http://balusc.blogspot.co.uk/2010/06/servlet-lifecycle-and-multithreading.html

person zeller    schedule 05.09.2013
comment
Хорошо .. То есть вы имеете в виду, что не обязательно создавать пул потоков на стороне сервера? То, как я сделал, тоже приемлемо?? - person mani_nz; 09.09.2013
comment
Я добавил еще несколько вещей в свой вопрос о том, почему я считаю, что создание нашего собственного executorService/Threadpool может быть неправильным. - person mani_nz; 12.09.2013
comment
Посмотрите, действительно ли задача завершена. Может еще что-то ходит. Также прочитайте исходники ThreadPoolExecutor.shutdown. есть некоторый документ, не относящийся к Javadoc, о том, кто может отключить рабочих. И, наконец, попробуйте отладить код, если сможете. - person zeller; 12.09.2013