gpt4 book ai didi

java - Thread.currentThread() 总是返回相同的实例吗?

转载 作者:行者123 更新时间:2023-12-01 17:30:25 32 4
gpt4 key购买 nike

我可以做 ConcurrentHashMap<Thread, object>存储线程的数据并使用 Thread.currentThread()取回它?我检查了Java源码,发现currentThread()是本地的并且 equals不会被覆盖。

最佳答案

你可以,但是有一个内置机制ThreadLocal就是为了这个目的。重新发明它的唯一原因是,如果您还需要从“所有者”之外的某个线程访问这些值,以便操作它们。

  ThreadLocal<Object> data = new ThreadLocal<Object>();

public Object getData() {
return this.data.get();
}

public void setData(Object data) {
this.data.set(data);
}

请注意,每个线程的初始值为 null,但您可以提供默认值:

  ThreadLocal<Object> data = new ThreadLocal<Object>() {
protected Object initialValue() { return "foo"; }
};

关于java - Thread.currentThread() 总是返回相同的实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621615/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com