2024/12/26 4

[Effective Java] 2-2. 객체 생성과 파괴: 생성자에 매개변수가 많다면 빌더를 고려하라

조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다. 1. 점층적 생성자 패턴매개변수에 따라 만들 수 있는 생성자를 만드는 방법선택적 매개변수가 많을 때 적절한 대응을 위해 사용됨 단점개수가 많아지면 읽거나 쓰는 것이 어려움런타임때 엉뚱한 동작을 해야 잘못되었음을 알게됨 2.자바빈즈 패턴기본 생성자로 객체를 만들고 setter를 호출하여 값을 설정하는 패턴 단점객체를 불변으로 만들 수 없음객체가 완전히 생성되기 전까지는 일관성이 무너진 상태일관성이 깨진 객체가 생성되면, 프로그램에 문제가 생김이를 찾기 위한 디버깅이 어려움 3. 빌더 패턴동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법필수 매개변수만으로 이루어진 생성자를 가지고 빌더 객체를 얻음 장점매개변수를 여러개..

Java 2024.12.26

[Effective Java] 2-1. 객체 생성과 파괴: 생성자 대신 정적 팩토리 메서드를 고려하라

조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다. 1. 정적 팩토리 메서드클래스는 생성자와는 별도로 static factory method 제공이 가능함 2. 장점이름을 가짐반환될 객체의 특성이 묘사되도록 할 수 있음public static Order primeOrder(Product product) { Order order = new Order(); order.prime = true; order.product = product; return order;}public static Order urgentOrder(Product product) { Order order = new Order(); order.urgent = true; orde..

Java 2024.12.26

[JVM 밑바닥까지 파헤치기] 12-3. 자바 메모리 모델과 스레드: 스레드

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다 1. 스레드 구현OS 스레드다양한 하드웨어와 운영체제에서 운용할 수 있는 통합된 개념핵심 메서드 모두가 네이티브 코드로 구현됨플랫폼 독립적으로 구현되기 어려운 점이 있음 커널 스레드 구현1:1 구현운영체제 커널에서 직접 지원각 프로세서에 스레드의 작업이 매핑됨사용할 수 있는 수가 제한적임시스템 콜로 스레드 연산이 이루어짐비용 높음 사용자 스레드 구현1:N 구현사용자 공간에서 구현되는 스레드 라이브러리사용자 스레드의 생성, 소멸, 동기화, 스케줄링은 커널의 도움없이 온전히 사용자 공간에서 처리됨 하이브리드 구현커널 스레드와 사용자 스레드를 함께 이용하는 방법 자바 스레드운영체제의 커널스레드로 구현됨 (HotSpotVM) 스케줄링시스템이..

Java 2024.12.26

[JVM 밑바닥까지 파헤치기] 12-2. 자바 메모리 모델과 스레드: 자바 메모리 모델

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다 1. 자바 메모리 모델다양한 하드웨어와 운영체제의 서로 다른 메모리 모델로부터 자바 프로그램을 보호하기 위함플랫폼에 상관없이 메모리를 일관된 방식으로 이용할 수 있음 2. 메모리 간 상호 작용메인 메모리모든 변수가 저장는 공간다양한 변수에 접근하는 규칙을 정의 작업 메모리각 스레드가 가지는 자체 작업 메모리격리되어 있음프로세스의 캐시와 비슷한 역할 프로토콜메인 메모리와 작업 메모리 간 상호작용을 위해 프로토콜이 정의됨read: 메인 메모리에서 데이터를 읽어 작업 메모리에 저장write: 작업 메모리에서 데이터를 읽어 메인 메모리에 저장load / store: 메인 메모리와 작업 메모리 간의 데이터 이동 VolatileJVM이 제공하..

Java 2024.12.26