@UtilityClass public class UserHolder { /** * 当前线程用户ID * */ private static final ThreadLocal<String> userIdTL = new ThreadLocal<>(); public void setUserId(String userId) { userIdTL.set(userId); } public String getUserId() { return userIdTL.get(); } public void clear(){ userIdTL.remove(); } }
时间: 2023-12-03 10:46:33 浏览: 145
这段代码是一个线程安全的工具类,用于在多线程环境下保存当前线程的用户ID。其中,ThreadLocal是Java提供的一个线程局部变量,它能够让每个线程都拥有自己独立的变量副本,从而实现线程间数据隔离。
具体来说,这个工具类提供了三个方法:
- setUserId(String userId):将当前线程的用户ID设置为指定的值。
- getUserId():获取当前线程的用户ID。
- clear():清除当前线程的用户ID。
使用这个工具类的示例代码如下:
```
// 在当前线程中设置用户ID
UserHolder.setUserId("123");
// 在当前线程中获取用户ID
String userId = UserHolder.getUserId();
// 清除当前线程的用户ID
UserHolder.clear();
```
这样做的好处是,在多线程环境下,每个线程都可以独立地管理自己的用户ID,避免了线程之间的数据干扰和竞争。
阅读全文