zoukankan      html  css  js  c++  java
  • ThreadLocal

    
    ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。
    
    ThreadLocal和Synchronized都是为了解决多线程中相同变量的访问冲突问题,
    不同的点是Synchronized是通过线程等待,牺牲时间来解决访问冲突
    ThreadLocal是通过每个线程单独一份存储空间,牺牲空间来解决冲突,
    
    相比于Synchronized,ThreadLocal具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问到想要的值。
    正因为ThreadLocal的线程隔离特性,使他的应用场景相对来说更为特殊一些。当某些数据是以线程为作用域并且不同线程具有不同的数据副本的时候,就可以考虑采用ThreadLocal。
    
    
    ThreadLocal多并发测试
    
    //定义一个全局变量
    public ThreadLocal threads = new ThreadLocal(){
      @Override
        protected ThreadTest initialValue() {
            return new ThreadTest();
        }
    };
    public ThreadLocal b = new ThreadLocal(){
        @Override
        protected String initialValue() {
            return new String();
        }
    };
    
    @Override
    public ThreadTest setThreadTest(String name,int n) {
        ThreadTest thread = new ThreadTest();
        thread.setName(name);
        b.set(name);
        thread.setPwd(b.get());
        threads.set(thread);
        setThread2(name,n);
        return thread;
    }
    
    
    public void setThread2(String name,int n){
        ThreadTest thread = threads.get();
        if(n%2==0){
            b.set(name + "---2的倍数---" + n);
        }else{
            b.set(name + "---不是2的倍数---" + n);
        }
        thread.setPwd(b.get());
        //数据库添加操作
        baseTransaction.save(thread);
        b.remove();
        threads.remove();
    }
    
  • 相关阅读:
    社区检测算法--Infomap
    correlation matrices 相关矩阵
    多分类评估指标
    juniper修改用户密码
    zabbix4.4监控mysql状态
    高并发linux内核参数优化
    用脚本监控windows tcp的连接数
    使用typeperf监控系统资源
    rsync同步时报错
    windows jenkins编译报错处理
  • 原文地址:https://www.cnblogs.com/yu-du-chen/p/12109062.html
Copyright © 2011-2022 走看看