RFR: 8371740 : LinkedTransferQueue.poll() returns null even though queue is not empty

Viktor Klang vklang at openjdk.org
Tue Nov 25 12:30:16 UTC 2025


On Tue, 25 Nov 2025 12:10:40 GMT, Doug Lea <dl at openjdk.org> wrote:

>> test/jdk/java/util/concurrent/BlockingQueue/MissedPoll.java line 46:
>> 
>>> 44:         try (var pool = Executors.newCachedThreadPool()) {
>>> 45:             var futures = new ArrayList<Future<Integer>>();
>>> 46:             var phaser = new Phaser(4);
>> 
>> @DougLea Would it make sense to do the following, and then only keep a single `phaser.arriveAndAwaitAdvance();` ? (and skip the explicit q.clear())
>> 
>> Suggestion:
>> 
>>             var phaser = new Phaser(4) {
>>                 @Override
>>                 protected boolean onAdvance(int phase, int registeredParties) {
>>                     q.clear();
>>                     return super.onAdvance(phase, registeredParties);
>>                 }
>>             };
>
> Sure. I was just trying to minimally adapt the submitter's bug report as test, so left this as-is.

It was primarily to validate my own understanding of equivalence :)

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28479#discussion_r2559816428


More information about the core-libs-dev mailing list