스터디 - CS 공부 2일차

take_the_king·2025년 2월 27일

자바의 제네릭: 타입 안정성과 코드 재사용성의 향상

제네릭은 자바에서 데이터 타입을 일반화하는 방법으로, 컴파일 시에 타입을 미리 지정하여 타입 안정성을 높이고 불필요한 타입 변환을 줄입니다1. 제네릭의 주요 장점은 다음과 같습니다:

타입 안정성 보장

불필요한 형 변환 제거

코드 재사용성 증가

제네릭 타입은 컴파일 시점, 즉 객체를 선언하고 new로 생성할 때 정해집니다. 제네릭을 사용하지 않으면 타입 안정성이 보장되지 않아 형 변환 오류가 발생할 수 있습니다.

자바의 동시성 문제와 멀티스레드
동시성 문제는 여러 스레드가 동시에 공유 자원에 접근할 때 발생할 수 있는 문제로, 데이터의 일관성을 해칠 수 있습니다4. 이를 해결하기 위한 방법으로는 synchronized 키워드 사용, java.util.concurrent 패키지의 활용, 그리고 락(lock) 메커니즘 등이 있습니다2.

멀티스레드의 과도한 생성은 다음과 같은 문제를 야기할 수 있습니다:

서버 리소스 과다 사용으로 인한 성능 저하

컨텍스트 스위칭 비용 증가

데드락 발생 가능성 증가

동기화와 비동기화
동기화는 작업이 끝날 때까지 기다리는 방식으로 작업의 순서를 보장하며, 비동기화는 작업을 병렬적으로 처리하여 효율성을 높이는 방식입니다3. 자바에서는 CAS(Compare-And-Swap)와 같은 메커니즘을 통해 효율적인 동기화를 구현할 수 있습니다.

캡슐화: 객체 지향 프로그래밍의 핵심
캡슐화는 객체의 상태나 메서드를 하나로 묶어 사용하기 쉽게 만드는 것입니다. 주로 접근 제어자를 통해 구현되며, 데이터 은닉과 보안을 강화합니다. 그러나 코드 복잡성 증가, 성능 저하 가능성, 테스트와 유지보수의 어려움 등의 단점도 있습니다.

Optional: null 처리의 안전성 향상
Optional은 null 처리를 보다 안전하게 할 수 있도록 도와주는 클래스입니다. 사용 시 주의할 점은 다음과 같습니다:

필드로 사용하지 않기

.get() 메소드 사용 자제

Optional을 남용하면 불필요한 객체 생성으로 인한 오버헤드가 발생할 수 있어 성능상 문제가 될 수 있습니다.

결론
자바의 다양한 기능과 개념들은 각각 고유한 장단점을 가지고 있습니다. 제네릭, 멀티스레딩, 동기화 메커니즘, 캡슐화, Optional 등을 적절히 활용하면 타입 안정성, 성능, 코드 품질을 크게 향상시킬 수 있습니다. 그러나 각 기능의 특성과 제약을 잘 이해하고 상황에 맞게 사용하는 것이 중요합니다.

profile
개발을 좋아하는 taketheking 입니다.

0개의 댓글