zoukankan      html  css  js  c++  java
  • 使用ThreadLocal在线程内部传递数据

    最近在项目中使用到了JDK提供的线程池,遇到了在多线程环境下在线程内部共享数据的问题

    使用ThreadLocal 来解决线程内部共享数据的问题

     定义BO

    package com.unicom.ucloud.aar.kettle.bo;
    
    import com.unicom.ucloud.aar.kettle.vo.KettleRunMessageVo;
    
    /**
     * @author jiaoyiping@gmail.com
     * @remark 
     */
    public class ThreadLocalMessage {
    	private  ThreadLocal<KettleRunMessageVo> messages;
    	
    	private ThreadLocalMessage(){
    		messages = new ThreadLocal<KettleRunMessageVo>();
    	}
    	
    	public  KettleRunMessageVo getMessage() {
    		return messages.get();
    	}
    
    	public  void setMessage(KettleRunMessageVo message) {
    		messages.set(message);
    	}
    	
    	private static ThreadLocalMessage threadLocalMessage = new ThreadLocalMessage();
    	
    	public static ThreadLocalMessage getInstance(){
    		return threadLocalMessage;
    	}
    }



    //在线程中使用

    KettleRunMessageVo message = ThreadLocalMessage.getInstance().getMessage();
    		if(message==null)
    		{
    			message = new KettleRunMessageVo();
    			
    			ThreadLocalMessage.getInstance().setMessage(message);
    		}

    使用message的set方法设置相应的值

    在同一个线程中的其他地方get这个message 得到相应的值






  • 相关阅读:
    非重复随机序列生成算法
    IE浏览器整页截屏程序
    地铁线路图的设计与实现
    拓扑排序算法的一个应用
    洛谷 P4450 双亲数
    洛谷 P2183 [国家集训队]礼物
    洛谷 P4159 [SCOI2009]迷路
    CF86D Powerful array
    Catalan数
    SP3266 KQUERY Kquery
  • 原文地址:https://www.cnblogs.com/jiaoyiping/p/3587492.html
Copyright © 2011-2022 走看看