home *** CD-ROM | disk | FTP | other *** search
- package java.lang;
-
- import java.util.concurrent.atomic.AtomicInteger;
-
- public class ThreadLocal<T> {
- private final int threadLocalHashCode = nextHashCode();
- private static AtomicInteger nextHashCode = new AtomicInteger();
- private static final int HASH_INCREMENT = 1640531527;
-
- private static int nextHashCode() {
- return nextHashCode.getAndAdd(1640531527);
- }
-
- protected T initialValue() {
- return null;
- }
-
- public T get() {
- Thread var1 = Thread.currentThread();
- ThreadLocalMap var2 = this.getMap(var1);
- if (var2 != null) {
- ThreadLocalMap.Entry var3 = java.lang.ThreadLocal.ThreadLocalMap.access$000(var2, this);
- if (var3 != null) {
- return (T)var3.value;
- }
- }
-
- return (T)this.setInitialValue();
- }
-
- private T setInitialValue() {
- Object var1 = this.initialValue();
- Thread var2 = Thread.currentThread();
- ThreadLocalMap var3 = this.getMap(var2);
- if (var3 != null) {
- java.lang.ThreadLocal.ThreadLocalMap.access$100(var3, this, var1);
- } else {
- this.createMap(var2, var1);
- }
-
- return (T)var1;
- }
-
- public void set(T var1) {
- Thread var2 = Thread.currentThread();
- ThreadLocalMap var3 = this.getMap(var2);
- if (var3 != null) {
- java.lang.ThreadLocal.ThreadLocalMap.access$100(var3, this, var1);
- } else {
- this.createMap(var2, var1);
- }
-
- }
-
- public void remove() {
- ThreadLocalMap var1 = this.getMap(Thread.currentThread());
- if (var1 != null) {
- java.lang.ThreadLocal.ThreadLocalMap.access$200(var1, this);
- }
-
- }
-
- ThreadLocalMap getMap(Thread var1) {
- return var1.threadLocals;
- }
-
- void createMap(Thread var1, T var2) {
- var1.threadLocals = new ThreadLocalMap(this, var2);
- }
-
- static ThreadLocalMap createInheritedMap(ThreadLocalMap var0) {
- return new ThreadLocalMap(var0, (1)null);
- }
-
- T childValue(T var1) {
- throw new UnsupportedOperationException();
- }
-
- // $FF: synthetic method
- static int access$400(ThreadLocal var0) {
- return var0.threadLocalHashCode;
- }
- }
-