RFR: 8286294 : ForkJoinPool.commonPool().close() spins [v4]
Martin Buchholz
martin at openjdk.java.net
Sun May 8 01:54:44 UTC 2022
On Sat, 7 May 2022 11:29:32 GMT, Doug Lea <dl at openjdk.org> wrote:
>> Changes ForkJoinPool.close spec and code to trap close as a no-op if called on common pool
>
> Doug Lea has updated the pull request incrementally with three additional commits since the last revision:
>
> - Accommodate restrictive SecurityManagers
> - merge with loom updates
> Merge remote-tracking branch 'refs/remotes/origin/JDK-8286294' into JDK-8286294
> - Fix testLazySubmit; enable suite
Here's a suggested strengthening of testCloseCommonPool:
- close should have "no effect", not just "not terminate".
- the submitted task will be run by the pool ... eventually (which suggests that closing the common pool maybe should quiesce the pool before returning)
- I might merge this with testCommonPoolShutDown
/**
* Implicitly closing common pool using try-with-resources has no effect.
*/
public void testCloseCommonPool() {
ForkJoinTask f = new FibAction(8);
ForkJoinPool pool;
try (ForkJoinPool p = pool = ForkJoinPool.commonPool()) {
p.execute(f);
}
assertFalse(pool.isShutdown());
assertFalse(pool.isTerminating());
assertFalse(pool.isTerminated());
String prop = System.getProperty(
"java.util.concurrent.ForkJoinPool.common.parallelism");
if (! "0".equals(prop)) {
f.join();
checkCompletedNormally(f);
}
}
-------------
PR: https://git.openjdk.java.net/jdk/pull/8577
More information about the core-libs-dev
mailing list