본문 바로가기

Java9

자바 동시성 기초 시작동시성 문제는 여러 스레드가 동시에 실행되는 상황에서 발생하는 문제를 의미합니다. 동시성 문제를 해결하는 것이 매우 중요합니다. 자바에서는 동시성 문제를 해결하기 위한 여러 방법을 제공합니다. 이를 간단히 정리하고자합니다.본문자바는 주로 두 가지 동시성 API를 제공합니다.블록 구조 동시성 또는 동기화 기반 동시성 또는 클래식 동시성 APIjava.util.concurrent 패키지를 사용하는 최신 동시성 API블록 구조 동시성블록 구조 동시성은 synchronized와 volatile 키워드를 사용하여 동시성 문제를 해결하는 방법입니다.synchronizedsynchronized 키워드는 메소드 또는 블록에 사용할 수 있습니다. synchronized 키워드를 사용하면 해당 메소드 또는 블록을 한 .. 2024. 12. 14.
클래스 로딩 시작기반이 탄탄한 자바 개발자로 성장하기 위해선 클래스 로딩에 대한 이해가 필요하다고 생각합니다. 클래스 로딩은 자바의 핵심 중 하나이며, 자바의 가장 기본적인 동작 원리 중 하나입니다. 클래스 로딩에 대해 알아보겠습니다.본문클래스 로딩이란?클래스 로딩은 자바 가상 머신이 클래스 파일을 읽어와서 메모리에 올리는 과정을 말합니다. 클래스 로딩은 두 단계로 이루어져 있습니다. 로딩 -> 링크입니다.로딩로딩은 클래스 파일을 구성하는 바이트의 데이터 스트림을 가져오는 과정입니다. 클래스 로더는 클래스 파일을 읽어와서 바이트 코드를 메모리에 저장합니다. 이때 클래스 로더는 클래스 파일을 찾는 경로를 지정해야 합니다.링크링크는 로딩된 클래스 파일을 실행 가능한 형태로 연결하는 과정입니다. 링크는 세 단계로 이루어져.. 2024. 12. 5.
자바 17 시작자바 17의 새로운 기능을 정리하고자 합니다.본문1. Text Blocks"""로 시작하고 끝나는 여러 줄의 문자열을 표현하는 방법입니다.String SQL = """ SELECT * FROM table WHERE column = 'value' """;2. switch 문switch 문에 새로운 문법이 추가되었습니다. case 문에서 ,를 사용하여 여러 값을 한 번에 처리할 수 있습니다. 또한 ->를 사용하여 switch 문을 표현할 수 있습니다.before public enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } var random = new Ran.. 2024. 12. 4.
자바 모듈 시작모듈은 자바 9부터 추가된 기능이다. 모듈의 도입은 애플리케이션 아키텍처에 깊은 영향을 미친다. 그래서 모듈을 이해하고 사용하는 것은 중요하다고 생각하여 이 글을 작성하게 되었다.본문배경모듈은 런타임에 의미를 가지는 응용 프로그램 배포 및 의존성의 단위다.이는 다음과 같은 자바 개념과 다르다.JAR 파일은 런타임에는 보이지 않으며 단순히 클래스 파일들을 포함하고 있는 압축된 디렉터리다.패키지는 실제로 접근 제어를 위해 클래스를 그룹화하기 위한 네임스페이스다.의존성은 클래스 레벨에서만 정의한다접근 제어와 리플렉션이 결합돼 명확한 배포 단위 경계 없이 최소한의 시행으로 개방적인 시스템을 생성한다.반면에 모듈은 다음과 같은 특징을 가진다.모듈은 모듈 간의 의존성 정보를 정의하므로 컴파일 또는 애플리케이션 .. 2024. 12. 4.