成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

問題描述

我知道ArrayList是線程不安全的類,在多線程情況下不能直接進(jìn)行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 的所有的操作都沒有加鎖。所以你需要在自己的業(yè)務(wù)線程中控制鎖。

回答2:

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

標(biāo)簽: java