본문 바로가기
[JAVA] Thread (3) - Synchronize 1. 동기화 (Synchronization) 멀티 쓰레드 프로세스는 여러 쓰레드가 하나의 프로세스 내에서 자원을 공유하여 작업하기 때문에 서로의 작업에 영향을 끼치게 된다. 이로 인한 문제들을 방지하기 위해 서로 간섭하지 못하도록 임계 영역(Critical Section)을 만들어 주는것을 쓰레드의 동기화(Synchroniztion)이라 한다. 임계 영역은 락(Lock)을 얻은 단 하나의 쓰레드만 출입이 가능하다. (객체 1개 당 락은 단 한 개만 존재한다.) synchronized로 임계 영역을 설정하는 두 가지 방법 1. 메소드 전체를 임계 영역으로 지정 : public synchronized void method() { } 2. 특정한 영역을 임계 영역으로 지정 : synchronized(객체의 참.. 2023. 1. 12.
[JAVA] Thread (2) - State, Scheduling, Priority, Daemon 1. 쓰레드 상태 (Thread State) NEW : 쓰레드가 생성되고 아직 start()가 호출되지 않은 상태. RUNNABLE : 실행 중 또는 실행 가능한 상태. BLOCKED : 동기화 블럭에서 일시정지된 상태 (lock이 풀릴 때까지 기다리는 상태). WAITING : 쓰레드의 작업이 종료되지는 않았지만 실행 가능하지 않은 일시정지 상태. TIMED_WAITING : 지정된 일정 시간동안 일시정지 상태. TEMINATED : 쓰레드의 작업이 종료된 상태. 2. 쓰레드 실행제어 (Thread Scheduling) start() 쓰레드를 시작한다. join() 다른 쓰레드의 작업을 기다린다. interrupt() 쓰레드의 작업을 취소한다. (실행 정지 상태인 쓰레드에 interrupt()가 호출되.. 2023. 1. 11.
[JAVA] Thread(1) - 개념 1. Thread란? 쓰레드란 프로세스의 실행 단위로, 실제로 프로세스의 작업을 수행하는 주체이며, 하나의 프로세스는 여러 개의 쓰레드로 구성이 가능하다. 자바의 메인 메소드 또한 쓰레드이며, 별도의 쓰레드 없이 메인 쓰레드 하나로만 구성된 프로세스를 싱글 쓰레드 프로세스(Single-Thread Process), 두 개 이상의 쓰레드로 구성된 프로세스를 멀티 쓰레드 프로세스(Multi-Thread Process)라고 부른다. 여기서 프로세스란, 실행 중인 프로그램으로 운영체제로부터 자원을 할당받는 작업의 단위이고, 두 개 이상의 프로세스가 하나의 CPU에서 처리되는 것처럼 보이는 것을 멀티태스킹(Multitasking)이라 한다. 하나의 프로세스가 할당받은 자원을 이용하는 쓰레드는 이 자원을 공유하게 .. 2023. 1. 10.
반응형