Потоковый вывод
Сервлеты HTTP, как правило, поддерживают обработку нескольких клиентов одновременно. Если методы в Вашем сервлете, работающие на клиента, используют общие ресурсы, то вы должны либо:
Этот урок расскажет вам, как выполнить второй вариант. (Первый обсуждается в уроке о потоках.)
Сервлеты HTTP, как правило, поддерживают обработку нескольких клиентов одновременно. Если методы в вашем сервлете, работаюшие на клиента, используют общие ресурсы, то Вы должны, согласовать управление, создав сервлет, который обслуживает только одного клиента в определенный момент времени. (Вы также можете синхронизировать доступ к этому ресурсу. Эта тема обсуждается в уроке о потоках)
Чтобы сервлет обслуживал только одного клиента в определенный момент времени, Вам надо реализовать интерфейс SingleThreadModel
в добавление к наследованию класса HttpServlet.Реализация интерфейса SingleThreadModel не подразумевает под собой написание каких-либо дополнительных методов. Вы просто реализуете этот интерфейс, и сервер обеспечит сервлету выполнение только одного service в определенный момент времени.
Например, сервлет ReceiptServlet принимает данные об имени пользователя, номере кредитной карточки и благодарит его за помещенный заказ. Если этот сервлет обновил базу данных, например, ту, что содержит информацию инвентаризации, тогда связь с базой данных является разделяемым ресурсом. Сервлет мог бы одинаково синхронизировать доступ к этому ресурсу, или реализовать интерфейс SingleThreadModel. Если сервлет реализует данный интерфейс, единственное изменение в коде по сравнению с выделено жирным шрифтом:
public class ReceiptServlet extends HttpServlet implements SingleThreadModel {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... } ... }