调用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相关推荐

  1. java idea封装快捷键_idea万能快捷键(alt enter),你不知道的17个实用技巧!!!

    说明 IDEA里有一个万能快捷键(alt enter),功能非常强大,同一个快捷键,可以根据不同的语境提示你不同的操作, 很多人可能还不了解这些功能,在处理代码的时候还手动处理,了解这些技巧之后,你编 ...

  2. SimpleDateFormat的线程安全问题

    2019独角兽企业重金招聘Python工程师标准>>> 今天用代码测试工具时,发现我的代码中存在这么一个问题,还不能忽略. 报错代码: public static final Sim ...

  3. java学习记录--ThreadLocal使用案例

    本文借由并发环境下使用线程不安全的SimpleDateFormat优化案例,帮助大家理解ThreadLocal. 最近整理公司项目,发现不少写的比较糟糕的地方,比如下面这个: public class ...

  4. 抛出这8个问题,检验你是否真的会ThreadLocal

    一.概述 1.官方术语 ThreadLocal类是用来提供线程内部的局部变量.让这些变量在多线程环境下访问(get/set)时能保证各个线程里的变量相对独立于其他线程内的变量. 2.大白话 Threa ...

  5. ThreadLocal的意义和实现

    可以想像,如果一个对象的可变的变量被多个线程访问时,必然是不安全的. 在单线程应用可能会维持一个全局的数据库连接,并在程序启动时初始化这个连接对象,从而避免在调用每个方法时都传递一个Connectio ...

  6. 线程系列5--java中的ThreadLocal类实现线程范围内的数据共享(二)

    ThreadLocal类可以理解成一个类似与map集合使用,以当前线程当做key 来使用,将线程氛围内需要共享的数据当做value,形成键值对的形式使用.ThreadLocal和线程同步机制都是为了解 ...

  7. Java中的ThreadLocal的使用--学习笔记

    ThreadLocal直译为"线程本地"或"本地线程",如果你真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,我认为应该叫做ThreadLo ...

  8. 从 ThreadLocal 到 AsyncLocal

    前些天跟大佬们在群里讨论如何在不使用构造函数,不增加方法参数的情况下把一个上下文注入到方法内部使用,得出的结论是 AsyncLocal .感叹自己才疏学浅,居然才知道有 AsyncLocal 这种神器 ...

  9. threadlocal_了解ThreadLocal背后的概念

    threadlocal 介绍 我知道本地线程,但直到最近才真正使用过它. 因此,我开始深入研究该主题,因为我需要一种传播某些用户信息的简便方法 通过Web应用程序的不同层,而无需更改每个调用方法的签名 ...

最新文章

  1. Linux下查看Nginx,tomcat等的并发连接数和连接状态
  2. 记一次Linux系统内存占用较高得排查
  3. 自动化运维——一键安装MySQL
  4. 单独学python能干嘛-学 Python 都用来干嘛的?
  5. 基于docker部署的微服务架构(九): 分布式服务追踪 Spring Cloud Sleuth
  6. pytorch笔记 torch.clamp(截取上下限)
  7. 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。...
  8. django项目开发1:搭建虚拟环境
  9. 做好计划事半功倍论文_Picocli 2.0:事半功倍
  10. Srping MVC入门推荐
  11. 计算机专业871,北科大计算机871经验帖
  12. 汇编指令中英文释义 ASCII码字符表
  13. 20172327 2018-2019-1 《程序设计与数据结构》第五周学习总结
  14. 算法复习——数位dp(不要62HUD2089)
  15. 我看考研(一)——为什么考研之考研的理由的重要性
  16. 42-Map集合遍历键找值方式-键值对对象Entry-键值对方式遍历
  17. linux菜刀使用教程,中国菜刀的使用教程
  18. 85 Operations Rules to Live By
  19. oracle 中的pi,Oracle中实现圆周率计算(一)
  20. QCSG1205031通信协议的研究与模拟服务器开发

热门文章

  1. HDU 4588 Count The Carries 数学
  2. sharepoint webpart 样式修改
  3. 关于黑客的报道里绝对不会提到的信息
  4. 【深入理解JVM】JVM垃圾回收机制
  5. 30336控制转移指令
  6. 单点登录总结(域名内与跨域名)
  7. C语言链表的来源分析
  8. Log4Net 最简配置
  9. 这个世界太小了,刚才我们老师搞块板给我,叫我弄个android上去,我发现核心板是sate210——O(∩_∩)O~...
  10. 记录发现的一个hiredis的bug