Maison  >  Questions et réponses  >  le corps du texte

java - La méthode set(int index, E element) dans ArrayList n'a pas besoin d'être synchronisée en cas de multithreading

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))));
      }
为情所困为情所困2702 Il y a quelques jours680

répondre à tous(2)je répondrai

  • 阿神

    阿神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.

    répondre
    0
  • 为情所困

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

    répondre
    0
  • Annulerrépondre