In Java 8, bekam java.lang.Thread
Klasse 3 neue Felder:Neue zusätzliche Felder in java.lang.Thread, was ist die Idee?
/** The current seed for a ThreadLocalRandom */
@sun.misc.Contended("tlr")
long threadLocalRandomSeed;
/** Probe hash value; nonzero if threadLocalRandomSeed initialized */
@sun.misc.Contended("tlr")
int threadLocalRandomProbe;
/** Secondary seed isolated from public ThreadLocalRandom sequence */
@sun.misc.Contended("tlr")
int threadLocalRandomSecondarySeed;
als es ausschließlich verwaltet in Javadoc sagte java.util.concurrent.ThreadLocalRandom
nach Klasse für zu werden.
Weiterhin in ThreadLocalRandom
sie in sehr freakish Weise verwendet:
SEED = UNSAFE.objectFieldOffset
(tk.getDeclaredField("threadLocalRandomSeed"));
PROBE = UNSAFE.objectFieldOffset
(tk.getDeclaredField("threadLocalRandomProbe"));
SECONDARY = UNSAFE.objectFieldOffset
(tk.getDeclaredField("threadLocalRandomSecondarySeed"));
(das gleiche Code Stück kann auch in LockSupport
Klasse erfüllt werden).
und dann diese Offsets intern in mehreren java.concurrent
Orten verwendet werden.
Was ist die Idee? Warum sind diese Felder innerhalb von java.lang.Thread
? Warum nicht innerhalb ThreadLocalRandom
?
Keine Ahnung von diesem - ich hätte/hätte eigentlich eine Antwort auf deine vorherige Frage bezüglich des '' tlr'' gehabt. – luk2302
@ luk2302 Tolle Antwort, ich danke dir vielmals, aber jemand hat meine Frage runtergestimmt, also muss ich sie löschen. Es tut mir wirklich leid. – Andremoniy
Downvotes sind kein Grund, Fragen oder Antworten zu löschen. Ich habe Ihnen zum Beispiel eine Upvote gegeben, die eine Punktzahl von 0 ergibt. – luk2302