title: Most Efficient but Thread-Safe List/Set
body: <p>Java has tons of different Collections designed for concurrency and thread safety, and I'm at a loss as to which one to choose for my situation.  </p>
  
  <p>Multiple threads may be calling <code>.add()</code> and <code>.remove()</code>, and I will be copying this list frequently with something like <code>List&lt;T&gt; newList = new ArrayList&lt;T&gt;(concurrentList)</code>. I will never be looping over the concurrent list.  </p>
  
  <p>I thought about something like <code>CopyOnWriteArrayList</code>, but I've read that it can be very inefficient because it copies itself every time it's modified. I'm hoping to find a good compromise between safety and efficiency.  </p>
  
  <p>What is the best list (or set) for this situation?</p>