久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

java - ArrayList中的set(int index, E element)方法,在多線程的情況下是不是不用同步

瀏覽:98日期:2023-11-18 17:50:27

問題描述

我知道ArrayList是線程不安全的類,在多線程情況下不能直接進行add(),remove(),但是是不是可以使用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)))); }

問題解答

回答1:

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

回答2:

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

標簽: java
主站蜘蛛池模板: 资溪县| 长海县| 朝阳县| 祁门县| 师宗县| 桃园市| 山东省| 清水河县| 巨鹿县| 三门峡市| 昌图县| 临清市| 三江| 吉水县| 大理市| 高平市| 三原县| 泊头市| 永定县| 泸水县| 旬阳县| 阿荣旗| 沛县| 临湘市| 左贡县| 大关县| 拜城县| 庄浪县| 龙里县| 大名县| 蒲城县| 思南县| 耒阳市| 商丘市| 泰来县| 泾阳县| 泰州市| 武隆县| 井陉县| 色达县| 金湖县|