Как определить статический Arraylist в поточно-безопасной среде.Я пробовал синхронизированное ключевое слово, но я слышал, что использование Automic классов из java concurrent package - лучшее решение для статического массива.Кто-нибудь может сказать, как объявить и использовать статический массив данных безопасным способом?
Обновление:
в моем коде у меня есть статический список, чтобы сохранить детали ваших техвход в приложение
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;
}
, поэтому есть возможность прочитать и записать запрос в одно и то же время