スレッド セーフ環境で静的 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;
}
そのため、読み取りと書き込みのリクエストが同時に行われる可能性があります