![](/img/trans.png)
[英]Non-blocking http server , java nio , python tornado eventlet
[英]Java Non-Blocking HTTP Server
我使用嵌入式Jetty編寫了一個應用程序,可以對其他服務進行網絡調用。
我假設服務線程在等待網絡呼叫完成時處於空閑狀態。
有沒有辦法讓一個工作線程在請求之間切換,以執行可以在當前時間完成的工作,然后在網絡調用返回時也處理它? 完成所有工作后將返回請求。
我知道這是一個常見的范例,我已經將它用於非阻塞TCP網絡,但我不確定如何在Java HTTP服務器上實現這一點,同時還要等待外部結果。
任何鏈接或解釋都表示贊賞。
謝謝
更新:我正在使用Membase和ElasticSearch(唯一的網絡調用)。 Membase返回“Future”對象,ElasticSearch返回“ListenableActionFuture”。 我希望能夠繼續處理線程以響應返回的這些對象。
您可以查看Deft ,它是單線程,異步,事件驅動的Web服務器。
Netty是一個允許您進行異步網絡的Java庫。
Netty支持http,但它是一個相當低級別的庫。
更高級別的圖書館是twitter的finangle,
http://twitter.github.com/finagle/
Finangle建立在netty之上,但支持連接池,負載平衡,並具有許多其他功能。 Finangle支持http。
如果您想在IO的同時進行工作,我建議您添加一個線程池來執行工作。 可以重復使用現有的線程,但是它可能帶來很多額外的工作,但可能收益太少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.