封装的方法 如果很多地方调用,且需要增加参数 可以考虑使用threadlocal

开发使用到了threadlocal 所以就写个demo 记录 一下:

例如:封装的方法getResult .   main 方法中的多次调用 模拟多个类中调用这个方法

2  之前习惯的逻辑就是给公共方法增加参数。然后 根据是否传参增加需求的逻辑

3 上面这样修改  会增加工作量,调用方法的位置都需要修改所以可以考虑使用threadLocal

4 在需要增加参数的位置增加参数 即可。其他方法就不需要 都修改了( 如果有更好的办法 ,欢迎评论交流,一起学习,一起进步)

需要注意的是:这个只能 同一个线程才可以用。dubbo 调用的话 是不行的。新起的多线程也是不行的

(如果有更好的办法 ,欢迎评论交流,一起学习,一起进步)

 

有的文章也 说 存在弱引用 可能会存在内存泄漏。所以使用完之后 最好 设置个null

文章链接:https://blog.csdn.net/puppylpg/article/details/80433271

 


public class testThreadlocal {



    public static void  main(String[] args){
        // 类a中调用
        System.out.println(getResult("AAA","aaa"));
        // 类b中调用
        System.out.println(getResult("BBB","bbb"));
        // 类c中调用
        System.out.println(getResult("CCC","ccc"));
        // 外部类调用
        ThreadLocalUtil.setThreadlocal("外部");
        System.out.println( getResult("waibu","waibu"));
    }

    public static String getResult(String canshu1,String canshu2){

        String flag = ThreadLocalUtil.getThradlocal();
        ThreadLocalUtil.setThreadlocal(null);
        if(null != flag && flag.equals("外部")){
            return "这是外部逻辑";
        }else {
            return canshu1+"--"+canshu2;
        }

    }
}

 

最好在使用完之后 手动调用remove方法:

相关链接 : https://blog.csdn.net/noodleprince/article/details/79716425

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值