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();
        }
    
    }
  • 相关阅读:
    tomcat设置编码utf8
    servlet详细理解
    设置utf8编码问题
    yarn状态机的可视化
    以卵石游戏(杭州电1527)
    Android Studio虚拟机配置虚拟键盘
    linux网络编程--跳水send和recv
    基于redis AE异步网络架构
    谈加班文化
    ios8加入通知栏开始
  • 原文地址:https://www.cnblogs.com/dayu007/p/10475070.html
Copyright © 2011-2022 走看看