如何在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

回到顶部