Je me sers de l'interface ExecutorService Multithreading pour exécuter les tâches en parallèle. Mais il y a une ressource partagée ici et j'ai besoin de la faire en synchroniser le bloc afin qu'un seul thread puisse y accéder à la fois. Comme je l'ai fait en bloc de synchronisation, le travail prend plus de 3 heures pour terminer. Je ne vois aucun point d'utiliser Multithreading ici à cause du bloc synchronisé. Quelqu'un peut-il suggérer est-il une alternative ou la meilleure façon de mettre en œuvre l'exemple ci-dessous pour exécuter la boucle plus rapide s'il vous plaît en parallèle:Suggestions alternatives pour MultiThreading
ExecutorService executor = Executors.newFixedThreadPool(100);
for(String str : arrayList){
for(String str1 : arrayList1){
for(String str2 : arrayList2){
executor.execute(new Runnable() {
@Override
public void run() {
//do Something
synchornize block{}
}
});
}
}
}
Toutes les suggestions s'il vous plaît?
Je ne sais pas qui a donné un négatif à cette question, mais s'il vous plaît pouvez-vous me faire savoir la raison? pour que je ne le répète pas ici? – user3750720
Pas moi, mais je pense que la réponse dépend du code qui se trouve dans votre bloc exécuteur. Et par curiosité, combien de temps cela prend-il avec un seul fil? –
Donc, fondamentalement, nous allons faire des appels d'API à l'intérieur de la boucle for imbriquée. Donc, vous voulez dire si je lance ceci avec un seul thread au lieu de 100 threads? Il faut pour toujours je crois que je n'ai jamais testé ça..mais si ses 100 threads prennent environ 3 heures ... En fait cela peut prendre 3hours même avec un seul thread car il y a un bloc synchronisé pour la plupart. @SteveSmith – user3750720