2015-05-04 6 views
-1
@WebServlet(value = "/account", asyncSupported = true) 
public class AccountServlet extends javax.servlet.http.HttpServlet { 
    int i = 0; 
    private final ScheduledExecutorService executor = 
    Executors.newSingleThreadScheduledExecutor(); 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) { 
     System.out.println("i="+(++i)); 
    } 

    @Override 
    public void destroy() { 
      executor.shutdown(); 
    } 
} 

i исследование для рабочего процесса сервлета. Когда я открываю новые вкладки на каждой вкладке и в новом браузере. I увеличивается. 1 2 и т. Д. На новых вкладках и даже в новом браузере.новый сервлет для каждого клиента

Я думаю, что я должен начать с 0 на новой вкладке и в новом браузере. Как мы можем объяснить, почему это так?

+0

Поскольку ваши предвзятые не являются правильными. Isuggest, вы делаете какую-то репрессию, вместо того, чтобы прыгать к выводам и спрашивать, почему они не выполняются. – EJP

+0

Я читаю книги и исследования, что я читаю шаг за шагом – Sarkhan

ответ

0

В течение всей жизненного цикла веб-приложения только одного объекта из сервлета создается и для каждого последующего запроса новый поток получает создан

Java, контейнер сервлетов/веб-сервер, как правило, многопоточный. То, что означает, что несколько запросов к одному сервлету могут выполняться одновременно с .

Так вот почему, когда следующий запрос придет время, он не будет повторно инициализировать элемент i вместо этого он использует предыдущее значение i

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