개발

concurrentmodificationException 해결방법

snow-line 2020. 11. 29. 23:48
반응형

concurrentmodificationException 은 iterator가 돌고 있을 때

 

데이터 변경이 일어나면서 발생한다.

 

 

다음과 같은 코드에서 이 오류가 발생한다.

for (IssueUser issueUser : user.getIssueUsers()) {
    user.removeIssue(issueUser.getIssue());
}
public void removeIssue(Issue issue) {
    Iterator<IssueUser> iterator = this.issueUsers.iterator();

    while (iterator.hasNext()) {
        IssueUser issueUser = iterator.next();
        if (issue.getId().equals(issueUser.getIssue().getId())) {
            this.issueUsers.remove(issueUser);
            break;
        }
    }
}

 

아래와 같이 List를 배열로 만들어서 돌리면 이런 문제를 해결할 수 있다.

List<IssueUser> issueUsers = Lists.newArrayList(user.getIssueUsers());

for (IssueUser issueUser : issueUsers) {
    user.removeIssue(issueUser.getIssue());
}

 

 

반응형

'개발' 카테고리의 다른 글

톰캣 메서드 제한 설정하기  (0) 2020.11.29
자바 파일 업로드 NIO 방식 처리  (0) 2020.11.29
index.html 이 {}으로 표시될때  (0) 2020.11.29
톰캣 매니저 설정하기  (0) 2020.11.29
mysql 접속 설정 확인 쿼리  (0) 2020.11.29