java 8 : Are LongAdder and LongAccumulator preferred to AtomicLong?
<p><code>LongAdder</code> as an alternative to <code>AtomicLong</code></p>

<pre><code>ExecutorService executor = Executors.newFixedThreadPool(2);    
IntStream.range(0, 1000)
    .forEach(i -&gt; executor.submit(adder::increment));    
stop(executor);    
System.out.println(adder.sumThenReset());   // =&gt; 1000
</code></pre>

<p><code>LongAccumulator</code> is a more generalized version of <code>LongAdder</code></p>

<pre><code>LongBinaryOperator op = (x, y) -&gt; 2 * x + y;
LongAccumulator accumulator = new LongAccumulator(op, 1L);

ExecutorService executor = Executors.newFixedThreadPool(2);
IntStream.range(0, 10)
    .forEach(i -&gt; executor.submit(() -&gt; accumulator.accumulate(i)));
stop(executor);

System.out.println(accumulator.getThenReset());     // =&gt; 2539
</code></pre>

<p>I have some queries.</p>

<ol>
<li>Is <code>LongAdder</code> always preferred to AtomicLong?</li>
<li>Is <code>LongAccumulator</code> preferred to both LongAdder and AtomicLong?</li>
</ol>