| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 코딩테스트팁
- 자바개발
- 알고리즘공부
- 자바
- 프로그래머스
- 개발자취업
- 멀티스레드
- 개발자팁
- 알고리즘
- 메모리관리
- 자바기초
- 예외처리
- 코딩테스트준비
- JVM
- 자바공부
- 가비지컬렉션
- 코딩인터뷰
- 자바프로그래밍
- 프로그래밍기초
- 정렬
- 파이썬
- 개발공부
- 클린코드
- 자료구조
- 코딩공부
- 객체지향
- Java
- HashMap
- 코딩테스트
- Today
- Total
목록copyonwritearraylist (2)
코드 한 줄의 기록
멀티스레드 환경에서 안전한 데이터 공유는 Java 개발자들이 피할 수 없는 과제다. 특히 Java 8부터 도입된 스트림과 함께 Concurrent 컬렉션을 사용할 때, 많은 개발자들이 같은 실수를 반복한다. 우리가 공부하면서 겪었던 실제 문제들과 해결 방법을 정리해보자.Concurrent 컬렉션이 정말 안전한가?동기화 컬렉션의 진짜 문제처음 Java를 배울 때 Vector나 Hashtable이 스레드 안전하다고 배웠다. 맞는 말이다. 하지만 이들은 전체 컬렉션을 락으로 보호하기 때문에 성능이 끔찍하다. 모든 메서드에 synchronized가 붙어있어서 한 번에 하나의 스레드만 접근할 수 있다. 생각해보면 읽기만 하는데도 락을 기다려야 한다니, 정말 비효율적이다. ArrayList나 HashMap이 나온 ..
자바로 개발하다 보면 리스트나 셋 같은 컬렉션을 순회하면서 요소를 추가하거나 삭제해야 할 때가 있다. 그런데 이 과정에서 ConcurrentModificationException이라는 예외를 만나본 적 있지 않은가? 처음엔 당황스럽지만, 이 예외는 자바 컬렉션의 안전장치로서 중요한 역할을 한다. 오늘은 Iterator의 개념부터 fail-fast 메커니즘, 그리고 컬렉션을 안전하게 수정하는 방법까지 함께 살펴보려 한다.Iterator란 무엇인가?Iterator는 자바 컬렉션 프레임워크에서 컬렉션의 요소들을 순차적으로 읽어오기 위한 표준 인터페이스다. 쉽게 말해, 리스트나 셋처럼 여러 데이터를 담고 있는 자료구조를 하나씩 탐색할 수 있게 해주는 도구라고 생각하면 된다.Iterator는 다음 세 가지 핵심 ..