私は、並列化しようとしているが、複数のスレッドの負荷が並行処理の利点を上回るかどうかわからない関数で、次のforループを使用します。forループをマルチスレッドチャンクに変換する
私が必要とするのは、対応する受信者に異なるログファイルを送信することです。時間のために、受信者の数が10を超えていないと言うことができます。ログファイルを背中合わせに送るのではなく、それらをすべて並列に送ると効率的ですか?
for(int i=0; i < receiversList.size(); i++)
{
String receiverURL = serverURL + receiversList.get(i);
HttpPost method = new HttpPost(receiverURL);
String logPath = logFilesPath + logFilesList.get(i);
messagesList = readMsg(logPath);
for (String message : messagesList) {
StringEntity entity = new StringEntity(message);
log.info("Sending message:");
log.info(message + "\n");
method.setEntity(entity);
if (receiverURL.startsWith("https")) {
processAuthentication(method, username, password);
}
httpClient.execute(method).getEntity().getContent().close();
}
Thread.sleep(500); // Waiting time for the message to be sent
}
また、どうすればうまくいくのか教えてください。私はそれを手動で行うかExecutorServiceを使うべきですか?
ありがとうございます。私は別のマシンでログファイルとレシーバを持っているので、このシナリオでは、他のケースで言及したパフォーマンスを達成するでしょうか? – aneela
複数の異なるマシンを使用している場合、異なるマシンにログファイルを起動すると、実際にパフォーマンスが向上する可能性があります。もっと細かいことなく本当に知るのは難しい@aneela。 – Gray