Thread 란?
하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread 이다.
Thread Status
멀티 Thread 프로그래밍에서의 동기화
동기화 (synchronization)
● 두 개의 thread 가 같은 객체에 접근 할 경우, 동시에 접근 함으로써 오류가 발생
● 동기화는 임계영역에 접근한 경우 공유자원을 lock 하여 다른 thread의 접근을 제어
● 자바에서는 synchronized 메서드나 synchronized 블럭을 사용
● synchronized 메서드
객체의 메소드에 synchronized 키워드 사용
현재 이 메서드가 속해있는 객체에 lock을 건다.
● synchronized 블럭
현재 객체 또는 다른 객체를 lock으로 만든다
Thread 란?
process : 프로그램이 실행되면 OS(운영체제)로부터 메모리를 할당받아서 프로세스 상태가 된다.
thread : 하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위입니다.
multi-threading : 여러 thread가 동시에 수행하는 프로그램을 만들때 여러 작업이 동시에 실행되는 효과를 만들어냅니다.
context :thread는 각각 자기자신만의 작업 공간을 가진다. (모바일, 웹 할때 만나는 용어)
각 쓰레드사이에서 공유하는 자원을 가질 수 있습니다.
여러 쓰레드가 자원을 공유하여 작업이 수행되는 경우 서로 자원을 차지하려는 race condition이 발생할 수 있다.
(의도하지 않는 결과를 생성할 수 있다.)
이렇게 여러 thread가 공유하는 자원중 경쟁이 발생하는 부분을 critical section 이라고합니다(임계영역)
동기화 작업 해주어야 합니다(일종의 순차적 수행) 구현하지않으면 오류가 발생할 수 있습니다.