簡體   English   中英

Java非阻塞HTTP服務器

[英]Java Non-Blocking HTTP Server

我使用嵌入式Jetty編寫了一個應用程序,可以對其他服務進行網絡調用。

我假設服務線程在等待網絡呼叫完成時處於空閑狀態。

有沒有辦法讓一個工作線程在請求​​之間切換,以執行可以在當前時間完成的工作,然后在網絡調用返回時也處理它? 完成所有工作后將返回請求。

我知道這是一個常見的范例,我已經將它用於非阻塞TCP網絡,但我不確定如何在Java HTTP服務器上實現這一點,同時還要等待外部結果。

任何鏈接或解釋都表示贊賞。

謝謝

更新:我正在使用Membase和ElasticSearch(唯一的網絡調用)。 Membase返回“Future”對象,ElasticSearch返回“ListenableActionFuture”。 我希望能夠繼續處理線程以響應返回的這些對象。

您可以查看Deft ,它是單線程,異步,事件驅動的Web服務器。

Netty是一個允許您進行異步網絡的Java庫。

http://www.jboss.org/netty

Netty支持http,但它是一個相當低級別的庫。

更高級別的圖書館是twitter的finangle,

http://twitter.github.com/finagle/

Finangle建立在netty之上,但支持連接池,負載平衡,並具有許多其他功能。 Finangle支持http。

如果您想在IO的同時進行工作,我建議您添加一個線程池來執行工作。 可以重復使用現有的線程,但是它可能帶來很多額外的工作,但可能收益太少。

暫無
暫無

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

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