ThreadLocal封装SimpleDateFormat
调用Thread.currentThread()获取当前线程。
JDK提供了ThreadLocal,在一个线程中传递同一个对象。
ThreadLocal表示线程的“局部变量”,它确保每个线程的ThreadLocal变量都是各自独立的。
ThreadLocal适合在一个线程的处理流程中保持上下文(避免了同一参数在所有方法中传递)
使用ThreadLocal要用try … finally结构。
private static final ThreadLocal<Map<String, DateFormat>>messageFormat = new ThreadLocal<Map<String, DateFormat>>(){ public Map<String, DateFormat> initialValue(){ return new HashMap<String, DateFormat>(); } }; /*** 获取线程局部变量* @param dateFormat* @return*/private static DateFormat getDateFormat(String dateFormat) { Map<String, DateFormat> formatters = messageFormat.get(); DateFormat formatter = formatters.get(dateFormat); if (formatter == null) { formatter = new SimpleDateFormat(dateFormat); formatters.put(dateFormat, formatter); } return formatter; }
ThreadLocal封装SimpleDateFormat相关推荐
- java idea封装快捷键_idea万能快捷键(alt enter),你不知道的17个实用技巧!!!
说明 IDEA里有一个万能快捷键(alt enter),功能非常强大,同一个快捷键,可以根据不同的语境提示你不同的操作, 很多人可能还不了解这些功能,在处理代码的时候还手动处理,了解这些技巧之后,你编 ...
- SimpleDateFormat的线程安全问题
2019独角兽企业重金招聘Python工程师标准>>> 今天用代码测试工具时,发现我的代码中存在这么一个问题,还不能忽略. 报错代码: public static final Sim ...
- java学习记录--ThreadLocal使用案例
本文借由并发环境下使用线程不安全的SimpleDateFormat优化案例,帮助大家理解ThreadLocal. 最近整理公司项目,发现不少写的比较糟糕的地方,比如下面这个: public class ...
- 抛出这8个问题,检验你是否真的会ThreadLocal
一.概述 1.官方术语 ThreadLocal类是用来提供线程内部的局部变量.让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其他线程内的变量. 2.大白话 Threa ...
- ThreadLocal的意义和实现
可以想像,如果一个对象的可变的变量被多个线程访问时,必然是不安全的. 在单线程应用可能会维持一个全局的数据库连接,并在程序启动时初始化这个连接对象,从而避免在调用每个方法时都传递一个Connectio ...
- 线程系列5--java中的ThreadLocal类实现线程范围内的数据共享(二)
ThreadLocal类可以理解成一个类似与map集合使用,以当前线程当做key 来使用,将线程氛围内需要共享的数据当做value,形成键值对的形式使用.ThreadLocal和线程同步机制都是为了解 ...
- Java中的ThreadLocal的使用--学习笔记
ThreadLocal直译为"线程本地"或"本地线程",如果你真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,我认为应该叫做ThreadLo ...
- 从 ThreadLocal 到 AsyncLocal
前些天跟大佬们在群里讨论如何在不使用构造函数,不增加方法参数的情况下把一个上下文注入到方法内部使用,得出的结论是 AsyncLocal .感叹自己才疏学浅,居然才知道有 AsyncLocal 这种神器 ...
- threadlocal_了解ThreadLocal背后的概念
threadlocal 介绍 我知道本地线程,但直到最近才真正使用过它. 因此,我开始深入研究该主题,因为我需要一种传播某些用户信息的简便方法 通过Web应用程序的不同层,而无需更改每个调用方法的签名 ...
最新文章
- Linux下查看Nginx,tomcat等的并发连接数和连接状态
- 记一次Linux系统内存占用较高得排查
- 自动化运维——一键安装MySQL
- 单独学python能干嘛-学 Python 都用来干嘛的?
- 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth
- pytorch笔记 torch.clamp(截取上下限)
- 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。...
- django项目开发1:搭建虚拟环境
- 做好计划事半功倍论文_Picocli 2.0:事半功倍
- Srping MVC入门推荐
- 计算机专业871,北科大计算机871经验帖
- 汇编指令中英文释义 ASCII码字符表
- 20172327 2018-2019-1 《程序设计与数据结构》第五周学习总结
- 算法复习——数位dp(不要62HUD2089)
- 我看考研(一)——为什么考研之考研的理由的重要性
- 42-Map集合遍历键找值方式-键值对对象Entry-键值对方式遍历
- linux菜刀使用教程,中国菜刀的使用教程
- 85 Operations Rules to Live By
- oracle 中的pi,Oracle中实现圆周率计算(一)
- QCSG1205031通信协议的研究与模拟服务器开发