自定义一个ThreadLocal类和ThreadLocal类的使用案例
来源:互联网 发布:软件测试工程师题库 编辑:程序博客网 时间:2024/05/23 23:16
1.自定义ThreadLocal类
package com.lilei.test.threadlocaltest;import java.util.Collections;import java.util.HashMap;import java.util.Map;/** * 自定义实现一个ThreadLocal类 * Created by Administrator on 2017/10/22. */public class MyThreadLocal<T> { //这个地方也可以用ConcurrentHashMap来存放 private Map<Thread,T> container = Collections.synchronizedMap(new HashMap<Thread, T>()); public void set(T value){ container.put(Thread.currentThread(),value); } public T get(){ Thread thread = Thread.currentThread(); T value = container.get(thread); if (value == null || !container.containsKey(thread)){ value = initialValue(); container.put(thread,value); } return value; } protected T initialValue() { return null; } public void remove(){ container.remove(Thread.currentThread()); }}
2.ThreadLocal使用案例
可以通过ThreadLocal存放JDBC连接,已达到控制事物的效果
比如 当你修改一个对数据库进行操作的时候需要记录日志,这个时候单线程跑代码是可以的,当出现两个或多个以上线程去对数据库进行操作的话就有可能出现前面一个线程把连接给关掉了的情况,后面线程再去使用这个连接的时候就会出现连接已经被关闭异常。
3.解决问题
每个线程都对应一个数据库连接,你不要管我的,我也不管你的,最后由事物统一提交操作就不会遇到上面的问题了,所以可以用ThreadLocal这个对象来解决这个问题
阅读全文
0 0
- 自定义一个ThreadLocal类和ThreadLocal类的使用案例
- ThreadLocal类的使用,ThreadLocal和synchonzied同步机制相比
- Threadlocal类的使用
- ThreadLocal类的使用
- threadlocal类的使用
- 类ThreadLocal的使用
- ThreadLocal类的使用
- ThreadLocal类的使用
- 类ThreadLocal的使用
- ThreadLocal类的使用
- ThreadLocal类的使用详解
- 探究类ThreadLocal的使用
- ThreadLocal使用案例
- 一个优雅的threadLocal工具类
- ThreadLocal和InheritableThreadLocal的使用
- ThreadLocal和InheritableThreadLocal的使用
- ThreadLocal的理解和使用
- ThreadLocal的设计和使用
- HDU 5253:连接的管道
- yii2 场景运用
- 数据结构:自平衡二叉查找树(AVL树)
- openwrt关闭串口打印信息
- C# PictureBox 显示单通道灰度图
- 自定义一个ThreadLocal类和ThreadLocal类的使用案例
- CF3D
- 触发器 trigger
- LeetCode101. Symmetric Tree
- c++读入文本所有内容
- Java NIO (一) 缓存区(Buffers)
- 浅谈对梯度下降的理解
- Struts2入门案例
- oracle表的管理简单增删改查回滚