1
在Play文檔有這個例子:Play Framework:如何創建和使用連接池?
public class AsyncTest extends Controller {
public static void remoteData() {
F.Promise<WS.HttpResponse> r1 = WS.url("http://example.org/1").getAsync();
F.Promise<WS.HttpResponse> r2 = WS.url("http://example.org/2").getAsync();
F.Promise<WS.HttpResponse> r3 = WS.url("http://example.org/3").getAsync();
F.Promise<List<WS.HttpResponse>> promises = F.Promise.waitAll(r1, r2, r3);
// Suspend processing here, until all three remote calls are complete.
List<WS.HttpResponse> httpResponses = await(promises);
render(httpResponses);
}
}
在上面的例子是在3個新HTTP
連接example.org
,正確?
有什麼辦法可以在啓動時創建一個連接池,然後從該池中獲取並重新使用連接,而不是反覆創建和拆除連接?理想情況下,我可以有多個連接池,例如,一個HTTP連接池,一個數據庫連接池等。我該怎麼做?
謝謝。
感謝:
不過,如果你想手動建立一套應用程序啓動(?也許TCP連接工作節點)的資源,你可以如下圖所示初始化在應用程序啓動任何東西。因此,如果我將連接存儲在一個靜態變量中,如何確保它是多線程訪問該變量以獲取連接並返回連接的線程安全? – Continuation 2012-01-17 09:42:10
使用synchronize(object){}可以顯式同步任何對象(無論它是否來自靜態變量)請參見[here](http://docs.oracle.com/javase/tutorial/essential/concurrency/locksync .html)提醒。 – 2012-01-17 09:55:06
由於性能方面的原因,HTTP連接池通常很有用(例如HttpClient默認使用它:http://hc.apache.org/httpcomponents-client-4.2.x/tutorial/html/connmgmt.html#d5e463) – 2014-10-13 07:56:05