编写一个示例程序,展示如何使用 ThreadLocal 类
以下是一个简单的示例程序,展示如何使用 ThreadLocal
来为每个线程维护独立的数据副本。
示例程序:使用 ThreadLocal 存储用户会话信息
程序输出(可能因线程调度顺序不同而变化):
Thread-0 session: User1
Thread-1 session: User2
Thread-2 session: Guest
程序说明:
ThreadLocal
的创建:- 通过
ThreadLocal.withInitial()
方法创建,设置默认值为"Guest"
。
- 通过
- 独立数据存储:
- 每个线程通过调用
userSession.set()
存储自己的数据。 - 即使多个线程访问同一个
ThreadLocal
实例,它们的数据是隔离的。
- 每个线程通过调用
- 数据访问与清理:
- 使用
userSession.get()
获取当前线程的值。 - 使用
userSession.remove()
在任务结束后清理数据,防止潜在的内存泄漏。
- 使用
扩展:更复杂的场景(模拟数据库连接管理)
输出:
Thread-0 using DBConnection1
Thread-1 using DBConnection2