[concurrency-interest] Packing 2 data points into 1 field in ThreadPoolExecutor

Martin Buchholz martinrb at google.com
Mon Dec 1 12:27:46 EST 2014


The only way to use atomic compare and set is to pack all your state
into a single primitive unit.  The largest we have is "long".  So we
regularly pack what the C folks would call bitfields into longs.

On Sat, Nov 29, 2014 at 8:13 AM, Alex Yursha <alexyursha at gmail.com> wrote:
> Hi all,
>
> According to javadoc current implementation of ThreadPoolExecutor packs two conceptual fields ‘workerCount’ and ‘runState’ into one actual field ‘ctl’ of type AtomicInteger.
>
> Could you please explain are there any performance or other benefits for this? It seems to complicate the class design and I can’t find the positive side of this.
>
> Thanks,
> Alex
>



More information about the Concurrency-interest mailing list