java 用threadlocal实现登录功能 你能手写一个吗?
时间: 2023-06-04 08:02:57 浏览: 204
线程安全你还在用synchronized?
是的,我可以手写一个使用ThreadLocal实现登录功能的Java程序。以下是示例代码:
```
public class UserContext {
private static final ThreadLocal<User> currentUser = new ThreadLocal<>();
public static void setCurrentUser(User user) {
currentUser.set(user);
}
public static User getCurrentUser() {
return currentUser.get();
}
public static void clear() {
currentUser.remove();
}
}
public class User {
private String username;
private String password;
// constructor and getters/setters
}
public class LoginService {
public void login(String username, String password) {
// authentication logic (e.g. DB or API call)
User user = new User(username, password);
UserContext.setCurrentUser(user);
}
public void logout() {
UserContext.clear();
}
}
```
在这个示例中,我们使用ThreadLocal将当前用户信息存储在当前线程中。在登陆时,我们可以通过LoginService将已验证的用户存储在UserContext中。在之后的操作中,我们可以通过UserContext获取当前用户,并在需要时将其清除。注意,这只是一个示例,实际应用中应进行更多的错误处理和边界检查。
阅读全文