我正在開發一個對具有http接口的數據庫執行廣泛查詢的軟件。因此,我的程序解析並處理以長http://地址形式的查詢。在Java上對服務器執行http查詢的有效方法
我已經意識到整個系統的瓶頸在於查詢,數據傳輸幾乎不超過20KB/s,即使我我正在用千兆連接坐在大學網絡中。最近我的一位朋友提到我可能以無效的方式編寫了我的代碼,這可能是此過程中速度不足的原因。所以我的問題是什麼是從Java中的Web源獲取數據的最快/最有效的方式。
這是我現在所擁有的代碼:
private void handleQuery(String urlQuery,int qNumber, BufferedWriter out){
BufferedReader reader;
try{
// IO - routines: read from the webservice and print to a log file
reader = new BufferedReader(new InputStreamReader(openURL(urlQuery)));
....
}
}
private InputStream openURL(String urlName)
throws IOException
{
URL url = new URL(urlName);
URLConnection urlConnection = url.openConnection();
return urlConnection.getInputStream();
}
嗯,我認爲網絡(至少從我的結尾)是相當穩定的,我的意思是當我做任何其他使用網絡(例如下載文章,圖像,甚至像linux發行版這樣的大文件),我得到幾MB /秒的速度。 我沒有使用線程(是的,這是我知道的災難,但我無法用線程安全有效的方式處理數據,畢竟這是我的第一個大項目) 我越來越傾向於指責遠程服務器的速度,但只是想確保我無法做到加快速度。 – posdef 2010-07-01 12:50:31