2024/11 8

[Java] 스레드 구성 방식

두 코드 모두 결과는 동일하지만, Runnable 인터페이스 방식은 더 유연하고 재사용 가능한 구현이 가능하다.// Thread 클래스 확장 방식public class Main { public static void main(String [] args) { Thread thread = new TaskThread1(); thread.start(); } public static class TaskThread1 extends Thread { @Override public void run() { System.out.println("Hello from new thread"); } }}// Runnable 인터페이스 구현 방식public clas..

Java & Spring Boot 2024.11.24

[Java] 멀티스레딩 연습 - 금고, 해커, 경찰 게임 구현

프로그램 개요이 프로그램은 다음과 같은 역할을 가진 세개의 스레드로 구성됩니다.  구성1. 금고 (Vault)임의의 비밀번호를 가지고 있으며, 해커가 추측한 비밀번호를 검증 2. 해커 스레드 (HackerThread)금고의 비밀번호를 추측하는 스레드오름차순(AscendingHackerThread)과 내림차순(DescendingHackerThread)으로 비밀번호를 추측. 3. 경찰 스레드 (PoliceThread)해커를 막으려는 역할10초 동안 카운트다운을 하며, 시간이 다 되면 프로그램 종료 실행 흐름 1. Vault 객체 생성임의의 비밀번호를 가진 금고 생성 2. 해커 및 경찰 스레드 생성오름차순 해커(AscendingHackerThread), 내림차순 해커(DescendingHackerThread)..

Java & Spring Boot 2024.11.24

[Java] Thread와 Runnable 활용 및 예외 처리

Thread 클래스와 Runnable 인터페이스Thread 클래스Runnable 인터페이스를 구현하고 있으며, 스레드 실행 흐름 제어 및 관련 메서드 제공주요 메서드스레드 시작 (start())스레드 일시 중지 (sleep())스레드 종료 (interrupt())스레드 이름 설정 (setName())스레드 우선순위 관리 (setPriority())Runnable 인터페이스스레드에서 실행할 작업을 정의하기 위한 인터페이스단 하나의 메서드인 run() 포함 스레드 생성 예제Java에서 스레드 생성 후 .start() 실행 시, JVM이 새 스레드를 생성해 운영체제에게 전달한다.아래 예제 코드에서 스레드 생성, 이름/우선순위 설정, 병렬 실행 확인을 위한 테스트를 진행했다.package thread.creat..

Java & Spring Boot 2024.11.24

[OS] Context Switch & Thread scheduling

1. 컨텍스트 스위치란? - 하나의 스레드 실행을 멈추고, 다른 스레드로 전환하는 과정작동 방식실행 중인 스레드의 상태(레지스터, 캐시 등)를 저장새 스레드의 상태를 복원하고 실행효율성 문제컨텍스트 스위치는 자원을 소모하며, 너무 많은 스레드가 실행될 경우 스래싱(Thrasing) 발생스래싱(Thrasing) : CPU가 작업 대신 스레드 관리(컨텍스트 스위치)에 시간을 더 소비하게 되는 현상스레드 간 차이같은 프로세스 내 스레드 간 컨텍스트 스위치는 상대적으로 빠름서로 다른 프로세스 간 스위치는 더 많은 리소스 소모 2. 스레드 스케줄링 방법 - 운영체제는 스레드의 실행 순서와 시간을 결정하기 위해 다양한 스케줄링 알고리즘 사용운영체제의 동적 우선순위 스케줄링작업에 따라 우선순위를 설정하고 필요 시 변..

OS 2024.11.23

[Java] Multithreading 기본 개념 - 응답 속도 & 성능 향상 이해하기

멀티스레딩이 필요한 이유1. 응답성 향상사용자 요청을 개별 스레드로 처리해 대기 시간을 줄임동영상 재생, 버튼 클릭 등 다양한 작업을 동시에 처리해 반응 속도 개선2. 성능 최적화병행성을 통해 단일 코어에서 여러 작업을 동시에 처리하는 효과병렬 처리를 활용하면 실제로 여러 작업을 동시에 수행 가능적은 하드웨어로도 높은 처리량을 구현, 비용 절감 효과 멀티스레드의 기본 개념프로세스 : 운영체제에서 실행되는 독립적인 어플리케이션스레드 : 프로세스 내에서 실행되는 작업 단위각 스레드는 개별 스택(Stack)과 명령어 포인터(Instruction Pointer)를 가짐스택(Stack)각 스레드의 메모리 영역으로, 지역 변수와 함수 호출 정보를 저장스레드가 수행하는 작업의 상태와 컨텍스트를 유지하는데 사용예를 들..

Java & Spring Boot 2024.11.23