国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

java – Die Methode set(int index, E element) in ArrayList muss im Fall von Multithreading nicht synchronisiert werden
為情所困
為情所困 2017-05-27 17:40:40
0
2
852

Ich wei?, dass ArrayList eine Thread-unsichere Klasse ist und in Multithread-Situationen nicht direkt add() und Remove() hinzufügen kann, aber kann ich die Methode set(int index, E element) verwenden?

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

Antworte allen(2)
阿神

非線程安全的意思就是 List 的所有的操作都沒有加鎖。所以你需要在自己的業(yè)務線程中控制鎖。

為情所困

看這個邏輯是每一個 index 的值只有一個線程訪問(賦值),對同一個 index 的訪問并沒有出現(xiàn)多線程

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage