【01-14】java ThreadLocal工具类

自定义ThreadLocal

package concurrent;

import java.util.HashMap;
import java.util.Map;

/**
 * @author aloha_world_
 * @date 2016年9月13日 下午11:40:52
 * @version v1.00
 * @description 继承自ThreadLocal类并实现其init方法
 */
public class MyThreadLocal extends ThreadLocal<Map<String, Object>> {

    private Map<String, Object> innerMap;

    @Override
    protected Map<String, Object> initialValue() {
        innerMap = new HashMap<String, Object>();
        return innerMap;
    }

    public Object get(String key) {
        return innerMap.get(key);
    }

    public void reset() {
        innerMap.clear();
    }

    public void set(String key, Object value) {
        innerMap.put(key, value);
    }

    @Override
    public void remove() {
        super.remove();
    }

}

操作ThreadLocal的工具类

package concurrent;

/**
 * @author aloha_world_
 * @date 2016年10月17日 下午10:30:23
 * @version v1.00
 * @description 操作ThreadLocal的工具类
 */
public class ThreadContextHolder {
    public static MyThreadLocal threadLocal = new MyThreadLocal();

    public static void reset() {
        threadLocal.reset();
    }

    public static void put(String key, Object value) {
        threadLocal.get().put(key, value);
    }

    public static void remove(String key) {
        threadLocal.get().remove(key);
    }
}

更一般的工具类

package org.alohaworld.util;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author aloha_world_
 * @date 2016年11月7日 下午11:37:05
 * @version v1.00
 * @description
 */
public class ThreadContextHolder {
    private static final Log logger = LogFactory.getLog(ThreadContextHolder.class);

    public static final ThreadLocal<Map<String, Object>> context = new MyThreadLocal();

    private static class MyThreadLocal extends ThreadLocal<Map<String, Object>> {
        @Override
        protected Map<String, Object> initialValue() {
            return new HashMap<String, Object>();
        }
    }

    public static Object get(String key) {
        return getMap().get(key);
    }

    private static Map<String, Object> getMap() {
        return context.get();
    }

    public static void put(String k, Object v) {
        logger.info("key:" + k + " value:" + Thread.currentThread().getName() + " added to threadlocal");
        getMap().put(k, v);
    }

    public static void reset() {
        getMap().clear();
    }
}

转载于:https://www.cnblogs.com/achievec/p/6286392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值