作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在线程安全环境中定义静态Arraylist。我尝试过synchronized关键字,但我听说使用java并发包中的Automic类是静态数组列表的最佳解决方案。有人能告诉我如何以安全的方式声明和使用静态数组列表吗?
更新:
在我的代码中,我有一个静态列表来维护应用程序中登录的详细信息
private static List<UserSessionForm> userSessionList = new ArrayList<UserSessionForm>();
在登录和访问主页期间(所有访问主页的时间)检查 userSessionList 中的用户详细信息,如果不可用,则在 userSessionList 中添加详细信息,并在注销期间从列表中删除用户详细信息。登录期间
if (getUserSessionIndex(uform)!=-1) {
this.getUserSession().add(usform);
this.getSession().setAttribute("customerId", getCustomer_id());
}
注销期间
public void logout(){
int index = getUserSessionIndex(usform);
//if user is already loginned, remove that user from the usersession list
if (index != -1) {
UserAction.getUserSession().remove(index);
}
}
private int getUserSessionIndex(UserSessionForm usform) {
int index = -1;
int tmp_index = 0;
for (UserSessionForm tmp : UserAction.getUserSession()) {
if (usform.equals(tmp)) {
if (usform.getUserlogin_id() == tmp.getUserlogin_id()) {
index = tmp_index;
break;
}
}
tmp_index += 1;
}
return index;
}
因此读写请求有可能同时发生
最佳答案
这在很大程度上取决于您将如何使用它。有几种选择:
CopyOnWriteArrayList
- 这是一种现代并发实现,最适合写入相对较少而读取较多的情况Collections.synchronizedList
获得的同步包装器- 它允许您访问“原始”未同步列表,例如在包含对象内,但提供对“外部世界”的线程安全访问。Vector
是一个旧的、过时的集合实现,不应在新代码中使用。
关于java - 如何在线程安全环境中定义静态Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6096237/
我是一名优秀的程序员,十分优秀!