Packing 2 data points into 1 field in ThreadPoolExecutor
Alex Yursha
alex.yursha at icloud.com
Mon Dec 1 17:44:57 UTC 2014
1. Do you mean 'the only way', except using a lock?
2. I also cant imagine how we can use long primitive type for CAS atomicity without a lock if only its not an AtomicLong. Any hint here, please?
Thanks
Sent from my iPhone
> On Dec 1, 2014, at 20:27, Martin Buchholz <martinrb at google.com> wrote:
>
> 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 core-libs-dev
mailing list