Commit 463da14c authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch15b] A test to see what's happening under the covers with CopyOnWriteArrayList

parent 1fd99a23
Loading
Loading
Loading
Loading
+42 −0
Changes for src/test/java/ch15b/COWALTest.java: 42 added lines, 0 removed lines.
Original line number Diff line number Diff line
package ch15b;

import org.junit.jupiter.api.Test;

import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;

public class COWALTest {
  @Test
  void doIGetTheSameIterator() {
    CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
    list.add("Hi");
    list.add("There");
    list.add("Everyone");

    // use the debugger to inspect these objects
    // the iterators are different instances (of course, because they will track different iterations of the data)
    // but the snapshot of the list that they iterate over are the same array
    System.out.println(list.iterator());
    System.out.println(list.iterator());
  }

  @Test
  void showMeTheNewArrayAfterWriting() {
    CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
    list.add("Hi");
    list.add("There");
    list.add("Everyone");

    // breakpoint here
    // initial iterator/backing array
    System.out.println(list.iterator());
    Iterator<String> iterator = list.iterator();
    System.out.println(iterator);

    // write to the list
    list.add("Hey I'm new here");

    // breakpoint here. Take a look at the backing array on a new iterator
    System.out.println(list.iterator());
  }
}