CopyOnWriteArrayList to have a threadsafe list that I can write to from different threads. The whole purpose was that I need to make a multitude ap API calls, process the information and save it to a collection. The API calls could be run concurrently, so I would make the process faster, so I needed a threadsafe implementation of List. I found that CopyOnWriteArrayList is such an implementation, but it wasn't working well. I know how many items I need to have in the collection after finishing, and that amount wwas always lower. I tried then using Collections.synchronizedList() which had a better result, but still not the amount I needed. When I did the process sequentially, then I got the exact number of items I needed. So something is wrong with synchronization, or is there something I need to know, that I am not aware of synchronized lists in Java fro them to be truly threadsafe? Coding wise I initialized the array with Collections.synchronizedList(), and used virtual threads for the API calls, in which the writing is done.