최대 1 분 소요

Thread

오늘은 Thread(스레드)에 대해서 설명을 하려고 합니다.

프로세스


  • 운영체제에서는 실행중인 하나의 애플리케이션이다.

  • 사용자가 애플리케이션을 싱행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 신행하는 것이다.

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미한다.

  • 프로그램 하나가 실행되는 단위가 프로세스다.

PC Register(Program Counter 레지스터)

JVM PC레지스터

  • 오브젝트와 인스턴스의 실행에 대한 수행역할을 한다.
  • 스레드가 생성될 때마다 생성되는 영역이며, 스레드가 하나씩 존재한다.
  • 다음 인출될 명령어의 주소를 가지고 있는 레지스터이다.

PC레지스터에서 스레드를..

  • 스레드가 몇 개 존재하는지 관리한다.
  • 스레드로 실행되는 프로그램 코드의 메모리 위치는 어디인지 관리한다.
  • 스레드의 상태는 무엇인지 관리한다.
  • 스레드 우선순위 관리한다.

Thread(스레드)

  • 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.
  • 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
           A a = new A 
    

    코딩을 하는순간 알아서 힙, 스택영역으로 지정해주는 역할이 스레드고 스레드를 생성한 후에 start()메서드를 호출해야 작업을 실행할 수 있다.

동기화 비동기화

동기화 비동기화

스레드 동기화를 하기 위해서는 임계영역과 락을 사용합니다.

임계영역

  • 동기화 상태에서 작업중인 내용이 다른 것의 간섭을 받지 않고 온전하게 작업이 완료되려면 임계영역을 설정해줘야한다.

  • 임계영역은 락을 얻은 단 하나의 스레드만 출입이 가능하다.

  • Synchronixed를 이용해서 임계영역을 설정한다.

lock(락)

임계영역으로 설정된 메서드의 작업이 끝나게 되면 다음 실행할 메서드를 락을 설정해줘서 실행시키는 역할이다.

스레드 풀(Thread Pool)의 개념도 중요한 부분중에 하나인데 아직 이해가 안되서 더 공부를 한 후 올리도록 하겠습니다.

카테고리:

업데이트:

댓글남기기