
컬렉션 및 배열에 저장된 요소를 반복처리하기 위해서 for문과 Iterator를 이용하는 방법도 있지만 java8부터 스트림(Stream)을 이용해서 처리하는 방법이 생겼다. 스트림이란 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다. 아래의 코드는 String타입의 List컬렉션으로부터 스트림을 이용해 요소를 반복처리하는 코드이다. List str = new ArrayList(); str.add("a"); str.add("b"); str.add("c"); Stream stream = str.stream(); stream.forEach( item -> System.out.println(item)); 스트림은 각 컬렉션으로부터 .stream()메소드를 통해 스트림 객체로 변환 후 스트림 객체의 메..

동시성(concurrency)이란 단일 cpu에서 동시에 여러 작업을 하는 것처럼 보이게 만드는 것 즉 싱글 코어에서 멀티 쓰레드를 동작시키는 방식이다. HashMap은 이런 동시성 문제가 있어 멀티 쓰레드 어플리케이션 환경에서는 ConcurrentHashMap을 더 선호한다고 한다. 이는 내부적으로 동기화를 하느냐의 차이가 있기 때문이다. 그렇다고 해서 ConcurrentHashMap은 추가 및 삭제와 같은 작업만 될뿐 읽기 작업은 동기화되지 않기때문에 모든 작업이 동기화되는 것은 아니다. 위의 표에서 볼 수 있듯이 속도는 HashMap이 빠르기 때문에 무조건적으로 ConcurrentHashMap이 좋다고 보기도 힘들다. 정리하자면 멀티 쓰레드 환경에서는 ConcurrentHashMap 단일 쓰레드에서..