Java-асинхронный сервлет все еще блокирует приложение - PullRequest
0 голосов
/ 03 ноября 2018

Вот мой код:

@WebServlet(value = "/path", asyncSupported = true)
public class Path extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public Path() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

    request.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);

    AsyncContext ac = request.startAsync();
    Runnable r = new Runnable() {

        @Override
        public void run() {
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {


                ac.getResponse().getWriter().append("Served at: ").append(request.getContextPath());
                ac.complete();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    };
    new Thread(r).start();



}

Когда я запускаю это два раза подряд, второй раз ждет, пока первый завершится, прежде чем он запустится, на 10 секунд дольше вместо асинхронного выполнения и завершения сразу после первого. Как мне это исправить?

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