国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

瀏覽:97日期: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
主站蜘蛛池模板: 乌兰察布市| 平遥县| 衡南县| 剑阁县| 巴彦县| 天长市| 大化| 乌审旗| 潮州市| 肇州县| 南丹县| 安国市| 饶阳县| 武川县| 霍城县| 吉林市| 山阴县| 正安县| 瑞丽市| 阳东县| 平远县| 武义县| 台北市| 伊川县| 永善县| 凤城市| 会同县| 沙河市| 铜梁县| 新河县| 延川县| 轮台县| 宁南县| 紫云| 丰原市| 屏山县| 金溪县| 北川| 林甸县| 华阴市| 柳州市|