如何在Java中初始化ThreadLocal对象
我在创建ThreadLocal并使用new
ThreadLocal对其进行初始化时遇到问题。问题是,从概念上讲,我真的只是想要一个持久列表,该列表可以延续线程的寿命,但是我不知道是否有一种方法可以在Java中初始化每个线程的内容。
例如,我想要的是这样的:
ThreadLocal static { myThreadLocalVariable.set(new ArrayList<Whatever>());
}
这样就可以为每个线程初始化它。我知道我可以这样做:
private static Whatever getMyVariable() { Whatever w = myThreadLocalVariable.get();
if(w == null) {
w = new ArrayList<Whatever>();
myThreadLocalVariable.set(w);
}
return w;
}
但我真的不想在每次使用时都进行检查。我能在这里做得更好吗?
回答:
您只需覆盖该initialValue()
方法:
private static ThreadLocal<List<String>> myThreadLocal = new ThreadLocal<List<String>>() {
@Override public List<String> initialValue() {
return new ArrayList<String>();
}
};
以上是 如何在Java中初始化ThreadLocal对象 的全部内容, 来源链接: utcz.com/qa/433589.html