Sha256: e54f53bc51c3e8fda73642b019944823e0c4be5c9ceead17cacc455bbfde90d8

Contents?: true

Size: 1.81 KB

Versions: 119

Compression:

Stored size: 1.81 KB

Contents

/*
 * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
 * Copyright (C) 2005 - Javolution (http://javolution.org/)
 * All rights reserved.
 * 
 * Permission to use, copy, modify, and distribute this software is
 * freely granted, provided that this notice is preserved.
 */
package j2me.lang;

import javolution.util.FastMap;

/**
 * Clean-room implementation of ThreadLocal for J2ME Platform support.
 */
public class ThreadLocal {

    private static final FastMap THREAD_TO_LOCAL_MAP = new FastMap(256)
            .setShared(true);

    public ThreadLocal() {
    }

    public Object get() {
        FastMap localMap = getLocalMap();
        Object value = localMap.get(this);
        if ((value == null) && !(localMap.containsKey(this))) {
            value = initialValue();
            localMap.put(this, value);
        }
        return value;
    }

    public void set(Object value) {
        getLocalMap().put(this, value);
    }

    public void remove() {
        getLocalMap().remove(this);
    }

    protected Object initialValue() {
        return null;
    }

    private FastMap getLocalMap() {
        FastMap localMap = (FastMap) THREAD_TO_LOCAL_MAP.get(Thread
                .currentThread());
        return (localMap != null) ? localMap : newLocalMap();
    }

    private FastMap newLocalMap() {
        // First, do some cleanup (remove dead threads).
        for (FastMap.Entry e = THREAD_TO_LOCAL_MAP.head(), end = THREAD_TO_LOCAL_MAP
                .tail(); (e = (FastMap.Entry) e.getNext()) != end;) {
            Thread thread = (Thread) e.getKey();
            if (!thread.isAlive()) {
                THREAD_TO_LOCAL_MAP.remove(thread);
            }
        }
        FastMap localMap = new FastMap();
        THREAD_TO_LOCAL_MAP.put(Thread.currentThread(), localMap);
        return localMap;
    }
}

Version data entries

119 entries across 119 versions & 1 rubygems

Version Path
rhodes-3.5.1.12 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.5 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.4.2 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.4 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.3 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.3.beta.4 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.3.beta.3 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.3.beta.2 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.3.beta.1 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.7 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.6 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.5 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.4 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.3 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.2 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.2.beta.1 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.1 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.0 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java
rhodes-3.3.0.beta.3 platform/bb/RubyVM/src/j2me/lang/ThreadLocal.java