Java 멀티프로세스 & 멀티스레드 완전 정복 들어가며Java 백엔드 개발을 하다 보면 멀티스레드, 동시성이라는 말을 자주 접하게 됩니다. 그런데 이런 생각을 한 번쯤 해봤을 것입니다."멀티프로세스와 멀티스레드가 뭐가 다른 거지? 그냥 여러 개 동시에 돌리는 거 아닌가?"둘 다 '동시에 여러 작업을 처리'하지만, 메모리 구조와 동작 방식이 완전히 다릅니다. 이 글에서는 기본 개념부터 Java 코드 예제, 그리고 멀티스레드에서 발생하는 실제 문제점까지 차근차근 살펴보겠습니다. 1. 프로세스 vs 스레드 기본 개념2. 멀티프로세스 — 구조, Java 예제, 한계3. 멀티스레드 — 구조, Java 예제4. 멀티스레드 문제점 심화 (경쟁 조건, 데드락, 가시성)5. 멀티프로세스 vs 멀티스레드 비교 & 선택 ..
Java
애너테이션(annotaion)이란? 들어가며Spring이나 NestJS로 개발을 하다 보면 @Controller, @Service, @Transactional 같은 코드를 자연스럽게 쓰게 됩니다. 그런데 문득 이런 생각이 든 적이 있을거라 생각합니다."이 @ 기호는 도대체 뭐고, 어떻게 동작하는 걸까?"처음엔 그냥 "붙이면 되는 것"으로 넘어가기 쉽지만, 애노테이션이 내부적으로 어떻게 동작하는지 이해하면 프레임워크를 훨씬 자신 있게 다룰 수 있습니다. 이 글에서는 애노테이션이 무엇인지, 어떤 원리로 동작하는지 차근차근 살펴보겠습니다. 애너테이션이란?애너테이션은 코드에 메타데이터(metadata) 를 부여하는 문법입니다. 쉽게 말해, "이 클래스는 컨트롤러야", "이 메서드는 트랜잭션 안에서 실행해줘"..
오버로딩(Overloading)과 오버라이딩(Overriding) 차이에 대해서 알아보자 들어가며 오버로딩과 오버라이딩은 자바에서 매우 중요한 개념입니다. 이 두 개념은 OOP의 특징은 다향성을(Polymorphism) 을 구현하는데 매우 중요하게 사용됩니다. 그렇기때문에 이 두 개의 개념의 대해서 차이를 알아보도록 하겠습니다. 오버로딩(Overloading) 한 클래스 내에서 같은 메소드를 사용하는데 매개변수만 다를 때를 오버로딩을 사용해 매개변수 값만 다르게 해서 같은 이름의 메서드를 사용할 수 있다. 즉, 오버로딩은 같은 이름의 메소드를 여러 개로 정의하는 것을 말합니다. 사용 조건 모든 메소드에 오버로딩을 적용할 수 있는 것은 아니다. 다음과 같은 두 가지 조건을 만족시켜야 한다. 1. 메서드 이..
JVM, JDK, JRE에 대해서 알아보자 JVM이란? JVM이란 Java Virtual Machine을 줄인 것으로 영어를 해석하면 자바 가상 머신이다. 즉 자바를 실행하기 위한 가상 머신이라고 생각하면 된다. 자바를 사용해 개발을 하게 되면 JVM에서만 실행된다. 만약 JVM이 설치되어있지 않으면 자바로 작성한 파일들이 실행되지 않는다. 자바를 사용하기 위해서는 꼭 JVM이 필요하다. C, C++와 같은 어어는 일반적으로 소스 코드를 네이티브 코드로 컴파일합니다. 소스코드가 기계어로 직접 변역되어 파일이나 라이브러리 파일로 생성되는 방식으로 사용합니다. JVM을 사용하는 자바의 컴파일 및 실행 방식은 다른 언어와는 다릅니다. JVM은 자바 소스 코드를 바이트 코드로 컴파일하여 생성된 클래스 파일을 실..