List<String> list = new CopyOnWriteArrayList<>();
list.add("Init1");
list.add("Init2");
list.add("Init3");
list.add("Init4");
위 코드에서 add마다 각각 복사본을 만들어서 add를 하고 원본객체인 list에 갱신시킨다고 알고있는데
1 , 2 3, 4모두 원본 list에 자신의 복사본을 갱신시키니 최종적으로 위 변수 list의 요소는 Init4 하나만 존재해야되지않음?
1. 복사본 안만듬 2. 복사본을 만든다 한들 왜 그런 결론이 나옴?
봤는데 까먹은건지 모르겠다만, 처음 보는 클래스네 ㄷ
보니까 list 내부의 array를 add할때마다 카피하네 list 내부의 array가 매번 새로 생성돼서 세팅되는거니까 list는 모든 멤버를 다 가지고 있지 이 클래스는 add할때 락을 걸어서 동시성 이슈를 회피하고 add할때 array를 카피해서 기존 array를 건드리지 않는 방식으로 다른 스레드에서 해당 array를 순회하고 있는 상황의 동시성 이슈를 회피함