JDK 16 RFR of JDK-8250240: Address use of default constructors in the java.util.concurrent
Lance Andersen
Lance.Andersen at oracle.com
Thu Jul 23 22:43:08 UTC 2020
+1
--
Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering
1 Network Drive
Burlington, MA 01803
Lance.Andersen at oracle.com
Sent from my iPhone
> On Jul 23, 2020, at 6:04 PM, Joe Darcy <joe.darcy at oracle.com> wrote:
>
> Hello,
>
> Martin, how would you prefer these changes, or equivalent ones, to get into the java.util.concurrent upstream sources?
>
> Several classes in java.util.concurrent rely on default constructors, which is not recommended. Please review the patch below which removes them along with the corresponding CSR (https://bugs.openjdk.java.net/browse/JDK-8250241); webrev at http://cr.openjdk.java.net/~darcy/8250240.0/.
>
> Thanks,
>
> -Joe
>
> diff -r d62da6fc4074 src/java.base/share/classes/java/util/concurrent/AbstractExecutorService.java
> --- a/src/java.base/share/classes/java/util/concurrent/AbstractExecutorService.java Thu Jul 23 20:25:41 2020 +0100
> +++ b/src/java.base/share/classes/java/util/concurrent/AbstractExecutorService.java Thu Jul 23 15:01:27 2020 -0700
> @@ -77,6 +77,11 @@
> public abstract class AbstractExecutorService implements ExecutorService {
>
> /**
> + * Constructor for subclasses to call.
> + */
> + public AbstractExecutorService() {}
> +
> + /**
> * Returns a {@code RunnableFuture} for the given runnable and default
> * value.
> *
> diff -r d62da6fc4074 src/java.base/share/classes/java/util/concurrent/ForkJoinTask.java
> --- a/src/java.base/share/classes/java/util/concurrent/ForkJoinTask.java Thu Jul 23 20:25:41 2020 +0100
> +++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinTask.java Thu Jul 23 15:01:27 2020 -0700
> @@ -242,6 +242,11 @@
> private static final int SIGNAL = 1 << 16; // true if joiner waiting
> private static final int SMASK = 0xffff; // short bits for tags
>
> + /**
> + * Constructor for subclasses to call.
> + */
> + public ForkJoinTask() {}
> +
> static boolean isExceptionalStatus(int s) { // needed by subclasses
> return (s & THROWN) != 0;
> }
> diff -r d62da6fc4074 src/java.base/share/classes/java/util/concurrent/RecursiveAction.java
> --- a/src/java.base/share/classes/java/util/concurrent/RecursiveAction.java Thu Jul 23 20:25:41 2020 +0100
> +++ b/src/java.base/share/classes/java/util/concurrent/RecursiveAction.java Thu Jul 23 15:01:27 2020 -0700
> @@ -166,6 +166,11 @@
> private static final long serialVersionUID = 5232453952276485070L;
>
> /**
> + * Constructor for subclasses to call.
> + */
> + public RecursiveAction() {}
> +
> + /**
> * The main computation performed by this task.
> */
> protected abstract void compute();
> diff -r d62da6fc4074 src/java.base/share/classes/java/util/concurrent/RecursiveTask.java
> --- a/src/java.base/share/classes/java/util/concurrent/RecursiveTask.java Thu Jul 23 20:25:41 2020 +0100
> +++ b/src/java.base/share/classes/java/util/concurrent/RecursiveTask.java Thu Jul 23 15:01:27 2020 -0700
> @@ -69,6 +69,11 @@
> private static final long serialVersionUID = 5232453952276485270L;
>
> /**
> + * Constructor for subclasses to call.
> + */
> + public RecursiveTask() {}
> +
> + /**
> * The result of the computation.
> */
> @SuppressWarnings("serial") // Conditionally serializable
> diff -r d62da6fc4074 src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java
> --- a/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java Thu Jul 23 20:25:41 2020 +0100
> +++ b/src/java.base/share/classes/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.java Thu Jul 23 15:01:27 2020 -0700
> @@ -65,6 +65,11 @@
>
> private static final long serialVersionUID = 7373984972572414692L;
>
> + /**
> + * Constructor for subclasses to call.
> + */
> + public AbstractQueuedLongSynchronizer() {}
> +
> /*
> * To keep sources in sync, the remainder of this source file is
> * exactly cloned from AbstractQueuedSynchronizer, replacing class
>
More information about the core-libs-dev
mailing list