zoukankan      html  css  js  c++  java
  • Java之回调模式和ThreadLocal

    最近上网看了一下回调模式,浏览了几篇文章,感觉还挺有意思,赶紧记录一下,免得以后忘记还要上网查。

    public class Leader implements CallBack {
    
        public void askCoder() {
            new Coder().build(this);
        }
    
        @Override
        public void msgBack(String taskName) {
            System.out.println(taskName);
        }
    }

    这个类代表公司高层

    public class Coder {
    
        public void build(CallBack callBack) {
            System.out.println("project");//你写了一个项目
            callBack.msgBack("salary");//然后管老板要工资
        }
    }

    这个类代表苦*码农

    public class Boot {
        public static void main(String[] args) {
            Leader leader = new Leader();
            leader.askCoder();//老板叫你写个项目
        }
    }

    这个主方法模拟你们的互动,这大概就是所谓的双向调用吧,至于回调接口就偷个懒直接用了CallBack,不晓得这个接口是不是给回调用的。

    ThreadLocal这个东西上网看了一些文章,给我的感觉就是这东西就像一个“线程银行”,它能记住不同的线程的“账户”。

    比如A线程存了100元,B线程存了200元,那么当A线程来取钱的时候,ThreadLocal不会把B线程账户里的钱给A线程。

    下面我做了一个简单的测试,首先定义一个自定义线程:

    import lombok.SneakyThrows;
    import lombok.extern.java.Log;
    
    @Log
    public class LocalThread implements Runnable {
    
        String msg;
    
        public LocalThread(String msg) {
            this.msg = msg;
        }
    
        @SneakyThrows
        @Override
        public void run() {
            Boot.threadLocal.set(msg);
            log.info(Thread.currentThread().getName() + Boot.threadLocal.get());
        }
    }

    然后,测试一下不同线程对ThreadLocal的存取:

    import lombok.extern.java.Log;

    @Log
    public class Boot {
    public static ThreadLocal threadLocal = new ThreadLocal();

    public static void main(String[] args) throws InterruptedException {
    threadLocal.set("时光雕琢他风骨");//主线程存入字符串
    LocalThread l1 = new LocalThread("风霜冷冽他眉目");
    Thread thread = new Thread(l1);
    thread.start();

    Thread.sleep(2000);
    log.info(Thread.currentThread().getName() + Boot.threadLocal.get());//主线程获取字符串

    }
    }

    结果可以发现,主线程和子线程对ThreadLocal的存取是互不影响的。

  • 相关阅读:
    把一件简单的事情做好你就不简单了
    一个经验尚浅的码农五年软件开发的一点自我总结,对工作五年的反思~
    我就是一名房地产经纪人!不是中介,谁能明白我们呢?
    我与父辈的酒局
    郎意难坚,侬情自热(文/王路)
    红灯须硬闯,马路要横穿(文/王路)
    孩子,你慢慢来
    职场六年后的一点点感言
    有幸见到一朵花的绽放
    当你遇到她
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13859030.html
Copyright © 2011-2022 走看看