zoukankan      html  css  js  c++  java
  • 使用ThreadLocal轻松解决多线程访问

    1.ThreadLocal仿代码

    package com.tazi.aop;

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

    public class MyThreadLocal<T> {
        private Map<Thread,T> values=Collections.synchronizedMap(new HashMap<Thread,T>());
        public T get(){
            Thread thread=Thread.currentThread();
            T t=values.get(thread);
            //第一次获取
            if(t==null&& !values.containsKey(thread)){
                t=initValue();
                values.put(thread, t);
                return t;
            }
            return t;
        }
        public T initValue(){
            return null;
        }
        public void set(T t){
            Thread thread=Thread.currentThread();
            values.put(thread, t);
        }
       
    }

    2.使用的例子

    package com.tazi.aop;


    public class ResourceQ {
        private int count;

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }
        public void addCount(){
            count++;
        }
       
    }

    3.

    package com.tazi.aop;


    public class ThreadLocalResourceQ {
        private static final MyThreadLocal resourceQ=new MyThreadLocal();
        public static ResourceQ getCurResourceQ(){
            ResourceQ rQ=(ResourceQ)resourceQ.get();
            if(rQ==null){ //说明当前线程还没有改局部变量的副本
                rQ=new ResourceQ();
                resourceQ.set(rQ);//把rQ放到当前线程中。
            }
            return rQ;
        }
    }

     

  • 相关阅读:
    性格-汉语-词语:坚忍
    汉语-词语:坚强
    品质-汉语-成语:坚持不懈
    was系统错误日志大量出现标识符缺失
    【iOS】UIWebView的HTML5扩展之canvas篇
    OA权限树搭建 代码
    linux下的环境文件设置说明
    怎样把多个Android Project打包成一个APK
    nyoj43 24 Point game(DFS)
    【西祠日志】【07】努力努力,找资料,思考,怎么做asp图片上传
  • 原文地址:https://www.cnblogs.com/tazi/p/2311574.html
Copyright © 2011-2022 走看看