使用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 得到相应的值
使用ThreadLocal在线程内部传递数据的更多相关文章
- ThreadLocal父子线程之间的数据传递问题
一.问题的提出 在系统开发过程中常使用ThreadLocal进行传递日志的RequestId,由此来获取整条请求链路.然而当线程中开启了其他的线程,此时ThreadLocal里面的数据将会出现无法获取 ...
- ThreadLocal(在一个线程中共享数据)
ThreadLocal 在"事务传递Connection"参数案例中,我们必须传递Connection对象,才可以完成整个事务操作.如果不传递参数,是否可以完成?在JDK中给我们提 ...
- Java代码质量改进之:使用ThreadLocal维护线程内部变量
在上文中,<Java代码质量改进之:同步对象的选择>,我们提出了一个场景:火车站有3个售票窗口,同时在售一趟列车的100个座位.我们通过锁定一个靠谱的同步对象,完成了上面的功能. 现在,让 ...
- Java多线程初学者指南(7):向线程传递数据的三种方法
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程 ...
- 你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递
5.1.3 函数参数的传递 我们知道,函数是用来完成某个功能的相对独立的一段代码.函数在完成这个功能的时候,往往需要外部数据的支持,这时就需要在调用这个函数时向它传递所需要的数据它才能完成这个功能获 ...
- C#给线程传递数据
目录 0. 前情说明 1. ParameterizedThreadStart类型的委托 2. 使用自定义类 3. 使用Lambda表达式 4. 参考以及文中源代码下载 shanzm-2021年8月24 ...
- Bundle传递数据,Handler更新UI
Bundle主要用于传递数据:它保存的数据,是以key-value(键值对)的形式存在的. Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean.byte.in ...
- 用WM_COPYDATA消息来实现两个进程之间传递数据
文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据. 进程之间通讯的几种方法:在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 1.使用内存映射 ...
- InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)
上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢? 测试代码 p ...
随机推荐
- java-基于JavaMail的Java邮件发送
1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送
- mysql 分库分表(水平切割和垂直切割)
分表是分散数据库压力的好方法. 分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库. 当然,首先要知道什么情况下,才需要分表.个人觉得单表记录条数达到百万到千万 ...
- Android修改默认SharedPreferences文件的路径,SharedPreferences常用工具类
import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; ...
- 免费 web api 接口大全
下面的接口来自互联网,部分功能需要付费 查询手机 http://www.yodao.com/s-martresult-xml/search.s?type=mobile&q= 手机号码 查询 I ...
- 帝国cms的list.var中使用php函数
$r[title] = esub($r[title],8,'...'); //截取前8个字符,多出部分用...代替 $r[title] = str_replace("lhj",&q ...
- Python中tab键自动补全功能的配置
新手学习Python的时候,如何没有tab键补全功能,我感觉那将是一个噩梦,对于我们这种菜鸟来说,刚接触python,对一切都不了解,还好有前辈们的指导,学习一下,并记录下来,还没有学习这个功能小伙伴 ...
- opengl的矩阵理解
原文链接:http://blog.csdn.net/byhuang/article/details/1476199 矩阵真的是一个很神奇的数学工具, 虽然单纯从数学上看, 它并没有什么特别的意义, 但 ...
- java (java.exe) 解释器 -D 选项
java.exe -h 其中: -D<名称>=<值> : 设置系统属性 如帮助说明的那样,该选项用于设置 java 运行时的 System.getProperty(prop ...
- 原生js获取元素样式
摘要: 我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class.现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置 在开始之 ...
- ios开发之--从相机或相册选取图片,并带删除操作的demo
多选图片的一个效果,如下图: