ArrayList本身不是線程安全的數(shù)據(jù)結(jié)構(gòu),所以在多線程環(huán)境下使用ArrayList時(shí)需要采取一些措施來(lái)保證線程的安全,常用的方法有以下幾種:
List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>());
CopyOnWriteArrayList<String> copyOnWriteArrayList = new CopyOnWriteArrayList<>();
List<String> list = new ArrayList<>();
// 使用synchronized關(guān)鍵字對(duì)ArrayList進(jìn)行加鎖
synchronized(list) {
// 進(jìn)行操作
}
// 使用Lock對(duì)ArrayList進(jìn)行加鎖
ReentrantLock lock = new ReentrantLock();
lock.lock();
try {
// 進(jìn)行操作
} finally {
lock.unlock();
}
這些方法可以保證在多線程環(huán)境下對(duì)ArrayList的操作是線程安全的,但需要根據(jù)具體的場(chǎng)景選擇合適的方法來(lái)保證線程安全。