在實際的編碼過程中,總會遇到單一處理會有效能風險的問題,於是我們求助於批量或者多執行緒。
一、批量處理
一般情況下批量處理就可以規避大部分效能風險的問題。將fetch(),改為batchfetch(),多數情況都比較簡單,尤其是呼叫其他應用的介面時,將單一介面,換成批量介面即可;而最終主要是修改資料從資料庫中的增刪改查的方式。
二、多執行緒
但是有時批量處理不能滿足需求,比如需要呼叫外部的批量介面,但是外部介面不支援,或者可以新增批量介面,但是發現批量取資料庫的效率仍然不滿足效能需求,那麼只能求助於多執行緒了,其中每個執行緒都是批量處理,這樣更加提公升了效率。
/*** 並行處理控制引數
*/public class parallelparameter
public parallelparameter(boolean isneedparallel, int countprethread)
public parallelparameter(boolean isneedparallel,boolean isneedbatchprocessperthread, int countprethread)
}/**
* 序列
* @param userlist
* @param dtolist
* @param code
* @param typelist
*/private void serialbatch(listuserlist, listdtolist, string code, listtypelist)
}/**
* 並行並且每個執行緒都是批量執行
* @param userlist
* @param dtolist
* @param code
* @param typelist
*/private void parallelbatch(final listuserlist, final listdtolist, final string code, final listtypelist, final parallelparameter parallelparameter)
int taskcount = (userlist.size() + parallelparameter.countprethread - 1) / parallelparameter.countprethread;
logger.info(string.format("user count %d", size));
logger.info(string.format("parallel process task count %d", taskcount));
// 這個等待所有的task完成一起返回
final countdownlatch latch = new countdownlatch(taskcount);
for(int i = 0; i < taskcount; i++)
listnewuserlist = new arraylist();
for(; start < end; start++)
try
}} catch (throwable t)
} finally
}});
}// 等待所有的並行task完成
try catch(interruptedexception e)
}/**
* 批量處理
* @param user
* @param code
* @param typelist
*/protected listprocessbatch(listuserlist, string code, listtypelist)
}if(!newlist.isempty())
} else
return dtolist;
}
curl多執行緒批量請求
測試經常遇到檢視大資料量url請求是否正常。單執行緒跑的太慢 可以自定義執行緒數進行跑,細節不多說,其實我也是上網上湊的,拿下來修修改改能用即可。bin bash ttime date y m d h m s 允許的執行緒數 thread num 5 定義描述符為9的管道 mkfifo tmp ex...
多程序VS多執行緒
大多數應用伺服器不需要程序間通訊。或避免程序間通訊,利用資料庫交換資訊。在這個條件下,如果是unix linux環境,採用多執行緒沒必要。多執行緒比多程序效能高?誤導!應該說,多執行緒比多程序成本低,但效能更低。在unix環境,多程序排程開銷比多執行緒排程開銷,沒有顯著區別,就是說,unix程序排程...
多執行緒批量網域名稱資訊查詢
寫了乙個多執行緒的批量網域名稱資訊查詢,data.txt儲存需要的查詢網域名稱。查詢結束後,生成的結果會分別儲存在以網域名稱為的檔名的檔案中 usr bin python coding utf 8 by zsdlove import whois import json import threadpo...