[Java] Thread(스레드)
Thread
오늘은 Thread(스레드)에 대해서 설명을 하려고 합니다.
프로세스
-
운영체제에서는 실행중인 하나의 애플리케이션이다.
-
사용자가 애플리케이션을 싱행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 신행하는 것이다.
-
컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다.
-
프로그램 하나가 실행되는 단위가 프로세스다.
PC Register(Program Counter 레지스터)
- 오브젝트와 인스턴스의 실행에 대한 수행역할을 한다.
- 스레드가 생성될 때마다 생성되는 영역이며, 스레드가 하나씩 존재한다.
- 다음 인출될 명령어의 주소를 가지고 있는 레지스터이다.
PC레지스터에서 스레드를..
- 스레드가 몇 개 존재하는지 관리한다.
- 스레드로 실행되는 프로그램 코드의 메모리 위치는 어디인지 관리한다.
- 스레드의 상태는 무엇인지 관리한다.
- 스레드 우선순위 관리한다.
Thread(스레드)
- 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.
- 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
A a = new A
코딩을 하는순간 알아서 힙, 스택영역으로 지정해주는 역할이 스레드고 스레드를 생성한 후에 start()메서드를 호출해야 작업을 실행할 수 있다.
동기화 비동기화
스레드 동기화를 하기 위해서는 임계영역과 락을 사용합니다.
임계영역
-
동기화 상태에서 작업중인 내용이 다른 것의 간섭을 받지 않고 온전하게 작업이 완료되려면 임계영역을 설정해줘야한다.
-
임계영역은 락을 얻은 단 하나의 스레드만 출입이 가능하다.
-
Synchronixed를 이용해서 임계영역을 설정한다.
lock(락)
임계영역으로 설정된 메서드의 작업이 끝나게 되면 다음 실행할 메서드를 락을 설정해줘서 실행시키는 역할이다.
스레드 풀(Thread Pool)의 개념도 중요한 부분중에 하나인데 아직 이해가 안되서 더 공부를 한 후 올리도록 하겠습니다.
댓글남기기