簡體   English   中英

異步Servlet處理如何提高性能

[英]how asynchronous servlet processing improve performance

我從http://docs.oracle.com/javaee/7/tutorial/doc/servlets012.htm閱讀

Java EE為Servlet和過濾器提供了異步處理支持。 如果Servlet或過濾器在處理請求時達到潛在的阻塞操作,則可以將操作分配給異步執行上下文,並將與請求關聯的線程立即返回到容器,而不會生成響應。 阻塞操作在另一個線程的異步執行上下文中完成,該線程可以生成響應或將請求分派到另一個servlet。

我想知道在哪里

不同的線程

來自? 假設容器有10個線程,其中5個正在處理請求,我們必須使用另外5個線程來處理長期運行的業務邏輯? 我們從哪里獲得性能改進? 可用的線程總數有限,對嗎?

謝謝。

閱讀有關Servlet 3 0最終規范的更多信息-第2.3.3.3節-異步處理 ,在此對其進行詳細說明。

它使容器分派線程(可能從托管線程池中 )以運行指定的Runnable AsyncContextServlet 3.0規范中定義的一種標准方式,用於異步處理HTTP請求。

基本上,HTTP請求不再綁定到HTTP線程 ,這使我們以后可以使用更少的線程來處理它。 事實證明,該規范提供了一個API,用於處理其他不同線程池中的異步線程。


閱讀有關Executors.newFixedThreadPool()更多信息,該文件創建一個線程池,該線程池重用在共享的無界隊列上操作的固定數量的線程。 在任何時候,最多nThreads個線程都是活動的處理任務。 如果在所有線程都處於活動狀態時提交了其他任務,則它們將在隊列中等待,直到某個線程可用為止。

請查看ExecutorService以獲取更多有關示例代碼的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM