Java Memory Model(JMM)과 동시성 규칙
·
Java
Java Memory ModelJava Memory Model(JMM)은 JVM 내에서 메모리에 데이터를 읽고(read) 쓸 때(write)의 규칙을 말한다.JMM는 메모리를 두 가지의 공간 개념으로 다룬다.하나는 스레드 간 공유되는 메모리로,다른 하나는 스레드 내에서만 사용되는 메모리로 다룬다.JVM에서 스레드 간 공유되는 영역은 Heap(Method Area도 포함)이다.스레드 내에서만 사용되는 영역은 JVM Stack이다. (JVM Stack 내의 Stack Frame들을 아우르는 스택 영역이라 생각하자.) 메모리 모델의 이해를 위해 쉬운 예시를 들어보자 가정Heap에는 `Object 1` 객체와 `Object 2` 객체가 들어있다.메서드 내용은 primitive 타입인 int 변수를 생성하고, `..
[Java] Optional에서 map과 flatMap의 차이점 쉽고 빠르게 이해하기
·
Java
map과 flatMap의 차이점Optional의 map과 flatMap의 주요 차이점은 함수의 반환 타입이 다르다는 것이다.map : Optional로 감싸진 타입(T)이 비어있지 않으면 .map()을 적용하고, 결과를 Optinal로 감싸서 반환한다. 만약 처음부터 Optional이 비어있었다면 빈 Optional을 반환한다.flatMap : map과 비슷하다. 하지만 .flatMap()을 적용한 결과를 Optional로 감싸지 않고 반환한다는 점만 다르다. 즉, 중첩된 Optional을 평면화 해주는 역할을 한다.예제 코드public class Car { // Car의 필드에 name은 차 이름이 있을수도 없을수도 있기에 Optional 로 감싸져 있다. private Optional na..