RFR (S): CR 8005926: (thread) Merge ThreadLocalRandom state into java.lang.Thread
Martin Buchholz
martinrb at google.com
Tue Feb 19 17:48:28 UTC 2013
On Wed, Jan 16, 2013 at 7:01 AM, Chris Hegarty <chris.hegarty at oracle.com>wrote:
> Thanks to all for the reviews and suggestions here. As you probably seen,
> I pushed these changes to jdk8/tl earlier today (sorry, I missed Alan as an
> official reviewer on the changeset.). Consider it an initial version,
> pending any outcome from this, or other, discussions.
>
> Also, 8006409: "ThreadLocalRandom should dropping padding fields from its
> serialized form", has been filed to follow up on the changes required to
> update the serial form.
>
> For those watching, I was preferable to push on with these changes ( and I
> apologize if it appeared pushy ), as the Double/Long Adder/Accumulator
> implementation, Striped64, now has a dependency on this change. It has
> become unbearable to keep in sync with different version of across
> different repositories.
Taking a look at this, I don't see any reason why we can't simply do
(while maintaining serialization compatibility):
diff --git a/src/share/classes/java/util/concurrent/ThreadLocalRandom.java
b/src/share/classes/java/util/concurrent/ThreadLocalRandom.java
--- a/src/share/classes/java/util/concurrent/ThreadLocalRandom.java
+++ b/src/share/classes/java/util/concurrent/ThreadLocalRandom.java
@@ -368,50 +368,6 @@
private static final long serialVersionUID = -5851777807851030925L;
/**
- * @serialField rnd long
- * @serialField initialized boolean
- * @serialField pad0 long
- * @serialField pad1 long
- * @serialField pad2 long
- * @serialField pad3 long
- * @serialField pad4 long
- * @serialField pad5 long
- * @serialField pad6 long
- * @serialField pad7 long
- */
- private static final ObjectStreamField[] serialPersistentFields = {
- new ObjectStreamField("rnd", long.class),
- new ObjectStreamField("initialized", boolean.class),
- new ObjectStreamField("pad0", long.class),
- new ObjectStreamField("pad1", long.class),
- new ObjectStreamField("pad2", long.class),
- new ObjectStreamField("pad3", long.class),
- new ObjectStreamField("pad4", long.class),
- new ObjectStreamField("pad5", long.class),
- new ObjectStreamField("pad6", long.class),
- new ObjectStreamField("pad7", long.class) };
-
- /**
- * Saves the {@code ThreadLocalRandom} to a stream (that is,
serializes it).
- */
- private void writeObject(java.io.ObjectOutputStream out)
- throws java.io.IOException {
-
- java.io.ObjectOutputStream.PutField fields = out.putFields();
- fields.put("rnd", 0L);
- fields.put("initialized", true);
- fields.put("pad0", 0L);
- fields.put("pad1", 0L);
- fields.put("pad2", 0L);
- fields.put("pad3", 0L);
- fields.put("pad4", 0L);
- fields.put("pad5", 0L);
- fields.put("pad6", 0L);
- fields.put("pad7", 0L);
- out.writeFields();
- }
-
- /**
* Returns the {@link #current() current} thread's {@code
ThreadLocalRandom}.
*/
private Object readResolve() {
More information about the core-libs-dev
mailing list