批量VS多執行緒

2021-06-16 14:40:39 字數 1922 閱讀 8302

在實際的編碼過程中,總會遇到單一處理會有效能風險的問題,於是我們求助於批量或者多執行緒。

一、批量處理

一般情況下批量處理就可以規避大部分效能風險的問題。將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...