User will be able to return java.util.concurrent.Callable<String> in their actions. Struts when sees such result, runs resultCode = result.call(); in it's own managed thread pool but exits from servlet's main thread with a null result, i.e. gives back main thread to container and leaves response open for concurrent processing. When resultCode = result.call(); returned, Struts calls javax.servlet.AsyncContext.dispatch() and resumes request processing within a container's thread servlet to generate the appropriate result for user according to resultCode.
This adds better support for SLS (Short request processing, Long action execution, Short response processing) via Servlet 3's Async API.
Support of other cases like SSL (e.g. a download server) or LLL(e.g. a video converter server) is still open.