Java/정리

Thread

낭구리 2021. 9. 7. 18:13

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 이라고합니다(임계영역)
동기화 작업 해주어야 합니다(일종의 순차적 수행) 구현하지않으면 오류가 발생할 수 있습니다.

 

'Java > 정리' 카테고리의 다른 글

Calendar class  (0) 2021.09.13
래퍼클래스  (0) 2021.09.07
제네릭  (0) 2021.09.07
예외처리  (0) 2021.09.01
내부클래스  (0) 2021.09.01