我遇到了一个问题,我正在创建一个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()
方法。参考:https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html - kevinarpeThreadLocal.withInitial(ArrayList::new)
。 - kevinarpeThreadLocal
。想知道你是否能帮忙。我还没有得到任何回应,我很困惑是否使用ThreadLocal是正确的选择。 - user1950349