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. 장점장점설명이름을 가질 수 있음생성자와 달리 이름으로 의미 전달 가능동일 시그니처 생성자 문제 해결매개변수만 다르고 타입이 같으면 컴파일 에러 발생 → 정적 메서드로 해결인스턴스 캐싱매번 새 객체를 생성하지 않고, 재사용 가능인스턴스 생성 통제싱글턴, 불변 객체, 생성 불가 등 구현 가능반환 타입을 하위 타입으로 지정 가능인터페이스 반환 → 실제 구현은 감춤입력값에 따라 다른 클래스 인스턴스 반환서브클래스를 숨기고, 조건 따라 인스턴스 선택반환 객체 클래스가 미리 없어도 됨정적 팩터리 메서드 작성 시점에 구현체가 없어..

Java 2024.12.26

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

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다 1. 스레드 구현OS 스레드다양한 하드웨어와 운영체제에서 운용할 수 있는 통합된 개념핵심 메서드 모두가 네이티브 코드로 구현됨항목커널 스레드 (1:1)사용자 스레드 (1:N)하이브리드 스레드구현 위치커널(운영체제 수준)사용자 공간 (라이브러리 수준)커널 + 사용자 공간매핑 방식사용자 스레드 1개 ↔ 커널 스레드 1개여러 사용자 스레드 ↔ 1개 커널 스레드여러 사용자 스레드 ↔ 여러 커널 스레드시스템 콜 필요모든 스레드 작업에 필요필요 없음상황에 따라 사용비용높음 (커널 호출 발생)낮음 (컨텍스트 스위치 빠름)중간병렬 처리가능 (다중 CPU 활용 가능)불가능 (동시 실행 불가)가능유연성낮음높음 (유저가 직접 관리)높음단점커널 자원 한정..

Java 2024.12.26

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

저우즈밍 님의 "JVM 밑바닥까지 파헤치기" 책을 정리한 포스팅 입니다 1. 자바 메모리 모델다양한 하드웨어와 운영체제의 서로 다른 메모리 모델로부터 자바 프로그램을 보호하기 위함플랫폼에 상관없이 메모리를 일관된 방식으로 이용할 수 있음 2. 메모리 간 상호 작용항목메인 메모리 (Main Memory)작업 메모리 (Working Memory)정의모든 공유 변수가 저장되는 공간각 스레드가 가지는 고유한 메모리 공간접근 가능성모든 스레드가 접근 가능해당 스레드만 접근 가능역할프로그램 전역 상태 저장메인 메모리의 복사본으로 작업 수행데이터 이동read/write 명령어로 작업 메모리와 상호작용load/store 명령어로 메인 메모리와 동기화특성데이터 일관성을 위한 기준점계산은 여기서 수행되고, 결과는 메인 메..

Java 2024.12.26