java - La méthode set(int index, E element) dans ArrayList n'a pas besoin d'être synchronisée en cas de multithreading
为情所困
为情所困 2017-05-27 17:40:40
0
2
645

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 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)))); }
为情所困
为情所困

répondre à tous (2)
阿神

La sécurité sans thread signifie quetoutes lesopérations de List ne sont pas verrouillées. Vous devez donc contrôler le verrou dans votre propre thread professionnel.

    为情所困

    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

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!