멀티스레드 (3) 썸네일형 리스트형 JAVA 데드락(Deadlock)과 이를 방지하는 방법 (교착상태) 데드락(교착 상태)란?데드락(Deadlock)은 둘 이상의 스레드가 서로가 점유한 자원을 기다리며 무한히 대기하게 되는 상태를 말한다. 한국어로는 일반적으로 "교착 상태"라고 하며, 다중 스레드 환경에서 자주 발생할 수 있는 대표적인 병목 현상 중 하나이다.1. 데드락 발생 조건 (Coffman Conditions)데드락은 다음 네 가지 조건이 모두 충족될 때 발생한다:상호 배제 (Mutual Exclusion): 자원은 한 번에 하나의 스레드만 사용할 수 있다.점유 및 대기 (Hold and Wait): 자원을 점유한 상태에서 다른 자원을 기다린다.비선점 (No Preemption): 자원을 강제로 회수할 수 없다.순환 대기 (Circular Wait): 스레드들이 자원을 서로 기다리며 원형 대기를 형.. JAVA synchronized 키워드와 ReentrantLock의 차이점 (멀티스레딩) Java에서 멀티스레딩을 구현할 때 동기화(synchronization)는 필수적인 요소다. 대표적으로 사용하는 두 가지 방법이 있는데, 바로 synchronized 키워드와 ReentrantLock 클래스다. 이 두 방식은 동시성 제어를 위한 도구라는 공통점이 있지만, 사용 방법과 특징에서 많은 차이를 가진다. 이 문서에서는 두 방식의 차이점을 명확하게 비교하고 실전에서의 활용 방식을 알아보자.* 동기화(Synchronization)란?멀티스레드 환경에서는 여러 스레드가 동시에 공유 자원에 접근할 수 있기 때문에, 데이터 일관성과 안정성을 확보하기 위해 동기화가 필요하다. 동기화를 통해 한 번에 하나의 스레드만 특정 코드 블록을 실행할 수 있도록 제어할 수 있다.1. synchronized 키워드syn.. JAVA HashMap vs Hashtable vs ConcurrentHashMap 차이점 자바에서 데이터를 Key-Value 형태로 저장할 때 가장 많이 사용하는 자료구조 중 하나가 HashMap과 Hashtable이다. 두 클래스 모두 해시 테이블을 기반으로 데이터를 저장하지만, 중요한 차이점이 있다. 이번 포스팅에서는 HashMap과 Hashtable의 차이를 상세히 알아보고, 언제 어떤 것을 사용해야 하는지 살펴보겠다.1. 기본 개념HashMapjava.util.HashMap은 Map 인터페이스를 구현한 클래스로, Key-Value 쌍으로 데이터를 저장한다.null 키와 null 값을 허용한다.동기화를 제공하지 않으므로 여러 개의 스레드가 동시에 접근하면 문제가 발생할 수 있다.LinkedHashMap과 TreeMap의 부모 클래스이다.HashMap 사용 예제Map hashMap = n.. 이전 1 다음