Is there any functional difference between AtomicInteger.updateAndGet() and AtomicInteger.accumulateAndGet()? : <p>Is there any scenario in which <code>AtomicInteger.accumulateAndGet()</code> can't be replaced with <code>AtomicInteger.updateAndGet()</code>, or is it just a convenience for method references?</p>

<p>Here's a simple example where I don't see any functional difference:</p>

<pre><code>AtomicInteger i = new AtomicInteger();
i.accumulateAndGet(5, Math::max);
i.updateAndGet(x -&gt; Math.max(x, 5));
</code></pre>

<p>Obviously, the same goes for <code>getAndUpdate()</code> and <code>getAndAccumulate()</code>.</p>
