Not yet using Collections.synchronizedList, just using simple ArrayList.

package com.logicbig.example.collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class SynchronizedListExample {
public static void main(String... args) throws InterruptedException {
ArrayList<Integer> list = new ArrayList<>();
Collections.addAll(list, new Integer[10000]);
System.out.println("initial size: " + list.size());
final ExecutorService e = Executors.newFixedThreadPool(10);
int size = list.size();
for (int i = 0; i < size; i++) {
e.execute(() -> list.remove(0));
}
e.shutdown();
e.awaitTermination(1000, TimeUnit.SECONDS);
System.out.println(list.size());//should be zero
}
}
Output
initial size: 10000
6629
JDK 25