Servlet API dice acerca de "AsyncContext.start":¿Cuál es el propósito de AsyncContext.start (...) en Servlet 3.0?
vacío inicio (pista java.lang.Runnable)
Hace que el recipiente para despachar un hilo, posiblemente de un grupo de subprocesos administrado, para ejecutar el especificado Runnable. El contenedor puede propagar información contextual apropiada a Runnable.
De esta descripción no está claro cómo se relaciona con la tarea de optimizar el uso de subprocesos cuando el trabajo requiere una espera.
En "Servlet JSP &", Budi Kurniawan da ejemplo de servlet 3.0 características asincrónicos, donde utiliza AsyncContext.start
, voy a mostrar la versión simplificada del ejemplo:
public void doGet(...) {
final AsyncContext asyncContext = request.startAsync();
asyncContext.start(new Runnable() {
@ Override
public void run() {
// do some work here which involves waiting
...
asyncContext.complete();
}
});
}
En la mayoría de los ejemplos que he se reunió, el método de servicio solo almacena el AsyncContext en algún lugar y se procesa en otro lugar (por ejemplo, mediante un hilo de fondo). En este ejemplo, parece que el trabajo acaba de pasar a otro hilo, que completa la solicitud. Según tengo entendido, ahora es simplemente el hilo de trabajo, que desperdicia tiempo en esperar.
¿De verdad ganas algo pasando el trabajo (que implica esperar) de un hilo a otro? Si no, ¿cuál es el propósito de AsyncContext.start(...)
?
¡Me estaba preguntando lo mismo! – Deadron