下面是從新澤西州docs樣本代碼異步服務:JAXRS異步服務
@Path("/resource")
public class AsyncResource {
@GET
public void asyncGet(@Suspended final AsyncResponse asyncResponse) {
new Thread(new Runnable() {
@Override
public void run() {
String result = veryExpensiveOperation();
asyncResponse.resume(result);
}
private String veryExpensiveOperation() {
// ... very expensive operation
}
}).start();
}
}
考慮到容器已經負責釋放連接處理線程返回池中,並交給請求處理的工作線程,我想知道爲什麼我們仍然需要以編程方式產生一個新的線程?這不應該只是容器配置(設置工作線程數)的問題嗎?
它不那麼簡單。首先,資源必須標記爲EJB。第二:你需要一個完整的配置文件服務器,因爲web配置文件不支持@Asynchronous –
是的,我忘記提及'AsyncResource'需要成爲一個EJB。您也可以將異步方法放到單獨的EJB中。 – simdevmon