Maison > Questions et réponses > le corps du texte
Je sais qu'ArrayList est une classe non sécurisée pour les threads et ne peut pas directement ajouter() et supprimer() dans des situations multithread, mais puis-je utiliser la méthode set(int index, E element) ?
List<T> records = InstanceUtil.newArrayList();
for (int i = 0; i < ids.getRecords().size(); i++) {
records.add(null);
}
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < ids.getRecords().size(); i++) {
final int index = i;
executorService.execute(() -> records.set(index, queryById(ids.getRecords().get(index))));
}
阿神2017-05-27 17:42:40
La sécurité sans thread signifie que toutes les opérations de List ne sont pas verrouillées. Vous devez donc contrôler le verrou dans votre propre thread professionnel.
为情所困2017-05-27 17:42:40
En regardant cette logique, chaque valeur d'index ne peut être accédée (attribuée) que par un seul thread, et il n'y a pas d'accès multithread au même index