최신 글
기술과 일상을 함께 기록합니다.
[병렬처리]2. 스레드의 안전성
공유 가변 상태가 스레드 안전성에 미치는 영향을 살펴보고 동기화·캡슐화·불변 객체로 클래스의 정확성을 지키는 방법을 정리한다.
String 보다는 StringBuilder, StringBuffer를 사용해야하는 이유.
문자열 누적 상황에서 String과 StringBuilder의 생성 비용을 비교하고 StringBuffer의 동기화가 필요한 범위를 예제로 설명한다.
[링크]셧다운 후크를 사용한 어플리케이션의 안전한 종료 처리
JVM 셧다운 훅으로 Executor 작업을 제한된 시간에 정리하는 방법과 훅이 실행되지 않는 종료 상황, 훅 사이 순서 제약을 살펴본다.
Java static 키워드
Java static 필드·메서드가 인스턴스와 달리 공유되는 방식, 정적 중첩 클래스와 초기화 시점 및 공유 상태의 주의점을 설명한다.
java final 키워드
Java final이 클래스 상속, 메서드 재정의, 변수 재할당에 각각 미치는 영향을 예제로 구분하고 참조 불변성과의 차이를 짚는다.
스레드
Java 스레드의 동시성과 병렬성, 공유 상태의 경쟁 조건, synchronized로 임계 영역을 보호하는 방법을 정리한다.
[NIO] 파일 채널(FileChannel)
FileChannel과 ByteBuffer로 파일을 끝까지 읽고 쓰는 반복 처리, 열기 옵션, 위치 변경과 파일 복사 방법을 설명한다.
Java 달력 만들기
java.time으로 월의 첫 요일과 일수를 구해 일요일부터 시작하는 콘솔 달력을 만든다.
Java 줄바꿈 처리
Java에서 LF와 CRLF를 파일에 기록할 때 운영체제 기본 줄 구분자와 파일 형식의 약속을 구분하고 중복 변환을 피하는 방법을 다룬다.
SocketAddress 클래스와 NetworkInterface 클래스
InetSocketAddress의 호스트·포트와 미해결 주소를 구분하고 NetworkInterface로 로컬 장치와 IP 주소를 조회하는 방법을 다룬다.
InetAddress 클래스
InetAddress로 호스트 이름과 IP 주소를 조회하고 IPv4·IPv6 결과를 다루는 방법과 DNS 조회 성공을 연결 성공과 구분하는 이유를 설명한다.