备案 控制台
开发者社区 Java开发者 文章 正文

《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之数据结构(2)

简介: 《Java工程师必读手册》——Java编程技巧系列——Java编程技巧之数据结构(2)

接上篇: https://developer.aliyun.com/article/1228152?spm=a2c6h.13148508.setting.25.21084f0eNCKPti


三、 使用ThreadLocal存储线程专有对象

 

ThreadLocal提供了线程专有对象,可以在整个线程生命周期中随时取用,极大地方便了一些逻辑的实现。

 

常见的ThreadLocal用法主要有两种:

 

保存线程上下文对象,避免多层级参数传递;

保存非线程安全对象,避免多线程并发调用。

 

1. 保存线程上下文对象,避免多层级参数传递

 

这里,以PageHelper插件的源代码中的分页参数设置与使用为例说明。

 

1) 设置分页参数代码

 

image.png

 

 

 

2) 使用分页参数代码

 

image.png

 

3) 使用分页插件代码

 

image.png 

 

如果要把分页参数通过函数参数逐级传给查询语句,除非修改MyBatis相关接口函数,否则是不可能实现的。

 

2. 保存非线程安全对象,避免多线程并发调用

 

在写日期格式化工具函数时,首先想到的写法如下:

 

image.png 

 

其中,每次调用都要初始化DateFormat导致性能较低,把DateFormat定义成常量后的写法如下:

 

image.png 

 

由于SimpleDateFormat是非线程安全的,当多线程同时调用formatDate函数时,会导致返回结果与预期不一致。如果采用ThreadLocal定义线程专有对象,优化后的代码如下:

 

image.png 

 

这是在没有线程安全的日期格式化工具类之前的实现方法。在JDK8以后,建议使用DateTimeFormatter代替SimpleDateFormat,因为SimpleDateFormat是线程不安全的,而DateTimeFormatter是线程安全的。当然,也可以采用第三方提供的线程安全日期格式化函数,比如apache的DateFormatUtils工具类。

 

注意

ThreadLocal有一定的内存泄露的风险,尽量在业务代码结束前调用remove函数进行数据清除。


 接下篇: https://developer.aliyun.com/article/1228148?groupCode=java

技术小达人
目录
相关文章
老板这功能得加钱
|
1天前
|
缓存 算法 Java
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,万字解析
老板这功能得加钱
8 0
老板这功能得加钱
|
1天前
|
NoSQL Dubbo Java
StringBoot编程式事务与声明式事务java工程师面试突击第一季
StringBoot编程式事务与声明式事务java工程师面试突击第一季
老板这功能得加钱
11 0
游客gy27fhrpaouum
|
2天前
|
存储 算法 Java
Java 数据结构
5月更文挑战第9天
游客gy27fhrpaouum
15 5
s:103
|
2天前
|
存储 算法 搜索推荐
【Java高阶数据结构】图补充-拓扑排序
【Java高阶数据结构】图补充-拓扑排序
s:103
7 1
s:103
|
2天前
|
算法 Java
【Java高阶数据结构】图的最短路径问题(下)
【Java高阶数据结构】图的最短路径问题
s:103
6 1
s:103
|
2天前
|
算法 Java
【Java高阶数据结构】图的最短路径问题(上)
【Java高阶数据结构】图的最短路径问题
s:103
6 1
ander.li
|
Java
Java手册总结(一)
ander.li
1117 0
天下无贼001
|
2天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第12天】 在现代软件开发中,多线程编程是提升应用程序性能和响应能力的关键手段之一。特别是在Java语言中,由于其内置的跨平台线程支持,开发者可以轻松地创建和管理线程。然而,随之而来的并发问题也不容小觑。本文将探讨Java并发编程的核心概念,包括线程安全策略、锁机制以及性能优化技巧。通过实例分析与性能比较,我们旨在为读者提供一套既确保线程安全又兼顾性能的编程指导。
天下无贼001
17 8
老板这功能得加钱
|
1天前
|
Java
阅读《代码整洁之道》总结(1),java多线程面试
阅读《代码整洁之道》总结(1),java多线程面试
老板这功能得加钱
5 0
老板这功能得加钱
|
1天前
|
缓存 安全 Java
7张图带你轻松理解Java 线程安全,java缓存机制面试
7张图带你轻松理解Java 线程安全,java缓存机制面试
老板这功能得加钱
7 0

Java开发者

热门文章

最新文章

  • 1
    python学习-函数模块,数据结构,字符串和列表(下)
  • 2
    Redis入门到通关之Redis数据结构-String篇
  • 3
    Redis入门到通关之Redis数据结构-List篇
  • 4
    Redis入门到通关之数据结构解析-SkipList
  • 5
    Pandas数据结构详解:Series与DataFrame的奥秘
  • 6
    Redis入门到通关之Redis数据结构-Hash篇
  • 7
    二叉树和数据结构
  • 8
    数据结构---B+Tree
  • 9
    Redis入门到通关之数据结构解析-Dict
  • 10
    单链表——“数据结构与算法”
  • 1
    Java中的集合框架:深入理解与应用
    43
  • 2
    Java并发编程:理解并使用Future和Callable接口
    20
  • 3
    性能工具之 Java 调试工具 JDB
    49
  • 4
    JAVA云HIS系统医院信息管理源码
    34
  • 5
    Java基于物联网技术的智慧工地云管理平台源码 依托丰富的设备接口标准库,快速接入工地现场各类型设备
    155
  • 6
    [Java基础]——类的生命周期
    19
  • 7
    [java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符
    31
  • 8
    【java进阶】Java中线程的实现方式
    26
  • 9
    【java进阶】集合的三种遍历(迭代器、增强for、Lambda)
    21
  • 10
    [java进阶]——方法引用改写Lambda表达式
    36
  • 相关课程

    更多
  • Java面试疑难点解析 - 面试技巧及语言基础
  • Java面试疑难点解析 - Java Web开发
  • Java面试疑难点解析 - 系统架构及项目设计
  • Java编程入门
  • Java面向对象编程
  • Java高级编程
  • 相关电子书

    更多
  • 如何通过 Serverless 提高 Java 微服务治理效
  • Spring Cloud Alibaba - 重新定义 Java Cloud-Native
  • Apache Flink 流式应用中状态的数据结构定义升级
  • 相关实验场景

    更多
  • 语言入门-2:基本类型
  • 语言入门-1:环境构建
  • 阿里云平台上进行Java程序的编译与运行
  • 使用Java面向对象编写网络通信程序应用
  • Elasticsearch Java API Client 开发
  • Arthas 进阶教程
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    代做工资流水公司昆明车贷银行流水 代开漳州工资流水单多少钱太原查签证银行流水威海薪资流水报价泉州制作在职证明孝感办理企业对公流水南昌工资代付流水多少钱绍兴制作对公账户流水新乡入职流水多少钱荆州办工资流水单芜湖企业对私流水开具扬州代办签证工资流水株洲对公账户流水代做嘉兴开房贷收入证明黄冈打印银行流水账咸阳打银行流水账单盐城打贷款流水苏州代做公司流水湖州流水代做石家庄代开个人工资流水福州企业对公流水样本临沂薪资流水临沂银行流水PS制作三亚对公账户流水打印威海开背调流水深圳薪资流水黄冈贷款流水制作蚌埠工资流水样本廊坊车贷工资流水 报价福州个人银行流水报价香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

    代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化