public class TestDemo { // 1、父集合操作会导致子集合出现 fast-fail // 2、子集合增删改查会影响父集合 // 3、删除元素利用迭代器 // 4、多线程需要考虑线程安全 // 5、COW 集合的使用可以避免线程安全问题 private static Object lock = new Object(); // fast-fail fast-safe public static void main(String[] args) { List<String> masterList = new ArrayList<>(10); masterList.add("a"); masterList.add("b"); masterList.add("c"); masterList.add("d"); List<String> stringList = masterList.subList(0, 3); masterList.remove(0); masterList.add("ten"); masterList.clear(); System.out.println(stringList); stringList.clear(); System.out.println(stringList); System.out.println(masterList); List<String> list = new ArrayList<>(10); list.add("one"); list.add("two"); list.add("three"); for (String s : list) { if("two".equals(s)){ list.remove(s); } } System.out.println(list); List<String> list1 = new ArrayList<>(10); list1.add("one"); list1.add("two"); list1.add("three"); Iterator<String> iterator = list1.iterator(); while (iterator.hasNext()) { synchronized (lock) { String next = iterator.next(); if ("one".equals(next)) { iterator.remove(); } } } System.out.println(list1); } }
fast-fail 以及 fast-safe
最新推荐文章于 2022-06-09 21:53:19 发布