可以说我的servlet中有这样的代码:
private static final String RESOURCE_URL_PATTERN = "resourceUrlPattern";
private static final String PARAM_SEPARATOR = "|";
private List<String> resourcePatterns;
@Override
public void init() throws ServletException {
String resourcePatterns = getInitParameter(RESOURCE_URL_PATTERN);
this.resourcePatterns = com.google.common.base.Splitter.on(PARAM_SEPARATOR).trimResults().splitToList(resourcePatterns);
}
如果永远不会修改该线程,使用
'resourcePatterns'
是否安全?可以这样说:
private boolean isValidRequest(String servletPath) {
for (String resourcePattern : resourcePatterns) {
if (servletPath.matches(resourcePattern)) {
return true;
}
}
return false;
}
在这种情况下,我应该使用
CopyOnWriteArrayList
还是ArrayList
可以? 最佳答案
是的,只要不写任何内容,可以同时从多个线程读取List。
有关此内容的更多详细信息,请参见this answer,对此进行了进一步说明。有一些重要的陷阱。