본문 바로가기

Process

(2)
[Java] 쓰레드(Thread) - 2/2 (동기화) 동기화(synchronization) 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는 것이다. 한 쓰레드가 특정 작업을 끝마치기 전까지 다른 쓰레드에 의해 방해받지 않게 해주는 개념이 임계 영역(critical section, synchronized 구간), 잠금(락, lock) 이다. 자바의 모든 객체(인스턴스, 클래스)는 락을 가지고 있다. synchronized 블록은 객체 단위로 락을 다룬다. Lock : 공유 자원에 한번에 한 쓰레드만 read, write를 수행 가능하도록 한다. 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는 것을 '쓰레드의 동기화(synchronization)'이라고 한다. 쓰레드 실행(main) Class public class Th..
[Java] 쓰레드(Thread) - 1/2 (프로세스, 쓰레드, 데몬쓰레드) 프로세스(process) 실행 중인 프로그램 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원, 쓰레드로 구성되어 있다. 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라고 한다. 멀티 쓰레딩의 장단점 장점 CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 작업이 분리되어 코드가 간결해진다. 단점 동기화(synchronization), 교착상태(deadlock)와 같은 문제들이 발생할 수 있다. 구현방법 2가지 Thread 클래스 상속 Runnable 인터페이스 구현 Runnable 인터페이스를 구현하는 방법이 더 좋다. 재사용성(reusabilit..