zoukankan      html  css  js  c++  java
  • ThreadLocalDemo

    package object;
    
    class Msg {
        private String msg;
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    }
    
    class MsgConsumer {
        public void print() {
            System.out.println(Thread.currentThread().getName() + ",msg=" + MsgUtil.get().getMsg());
        }
    }
    
    class MsgUtil {
        public static Msg msg;
        // threadLocal线程同步,一个只能存一个,一次只能取一个
        private static ThreadLocal<Msg> threadLocal = new ThreadLocal<>();
    
        public static Msg get() {
            return threadLocal.get();
        }
    
        public static void set(Msg msg) {
            threadLocal.set(msg);
            // threadLocal.remove();
        }
    
    }
    
    /**
     * @author dayu
     */
    public class ThreadLocalDemo {
        public static void main(String[] args) {
            new Thread(() -> {
                Msg msg = new Msg();
                msg.setMsg("aaaaaaaa");
                // MsgUtil.msg = msg;//使用该方法,会导致线程不同步
                MsgUtil.set(msg);//使用ThreadLocal同步数据
                new MsgConsumer().print();
            }, "user A").start();
            new Thread(() -> {
                Msg msg = new Msg();
                msg.setMsg("bbbbbbbb");
                // MsgUtil.msg = msg;
                MsgUtil.set(msg);
                new MsgConsumer().print();
            }, "user B").start();
        }
    
    }
  • 相关阅读:
    php函数、php定义数组和数组遍历
    php语句
    php基础
    phpcms 标题设置
    上传头像预览
    简单的轮播样式
    ajax 小练习
    生成地图
    php注释规范
    thinkphp 实现分页
  • 原文地址:https://www.cnblogs.com/dayu007/p/10475070.html
Copyright © 2011-2022 走看看