개발/JAVA

4. 라이브러리 활용 (5) 스레드(thread)

anonymouss 2022. 6. 28. 13:17

1. 스레드란?   개념1, 개념2, 개념3, 예제1

    - 프로세스(process, 실행중인 프로그램)내에서 실제로 작업을 수행하는 주체를 말한다

    - 경량 프로세스로서 동시에 여러개의 명령문들을 실행할 수 있다. 

    - 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 

2. 스레드 생성  개념1, 예제1 

  1) Thread 클래스 

     - 스레드 형태로 실행할 객체를 구현할 때 상속받는 객체

     - 스레드로서 동작할 실행문은 run( ) 메소드에 구현한다

     - run( ) 메소드 실행: 객체 생성 후 start( ) 메소드를 호출

  2) Runnable 인터페이스

     - 스레드 형태로 실행할 객체를 구현할 때 상속받는 객체

     - 스레드로서 동작할 실행문은 run( )메소드에 구현한다

     - run( ) 메소드를 실행하기 위해 스레드 클래스를 생성해야 한다

     - 스레드 클래스 생성시 인자 값으로 Runable 상속하는 객체를 전달한다

     - run( ) 메소드 실행: 생성된 스레드 클래스의 start( ) 메소드를 호출

   3) Thread 설정 

     - 스레드를 제어하기 위해 스레드에 setName( )으로 이름을 지정할 수가 있다

     - 동시에 실행되는 여러 스레드는 setPriority( )로 실행되는 우선 순위를 지정할 수 있다

 

3. 동기화  개념1, 개념2, 예제1

  1) 동기화란?

     - 하나의 자원을 여러 스레드가 동시에 사용할 때 자원의 안전성을 확보하기 위해 처리하는 기능 

  2) 특정 객체 : synchronized(객체이름)으로 특정 객체에 대하여 동기화를 지정할 수 있다

  3) 메소드 : 선언 부에 synchronized를 선언하여 메소드 단위로 동기화를 지정할 수 있다

  4) 스레드 상태 

     - Runnable : 실행을 하기 위한 대기 상태

     - Running : 현재 실행 중인 상태

     - Terminated : 실행을 종료한 상태

4. 스레드 제어   개념1, 개념2

  1) 스레드 대기상태 :  wait( )
      스레드 대기상태 해제 : notify( ), notifyAll( )

  2) join( ) : 특정 스레드의 실행 종료를 기다리는 메소드

  3) sleep( ) : 인자로 지정된 시간동안 스레드의 실행을 잠시 멈춤

  4) interrupt( ) : 스레드의 상태를 종료 시킨다

  5) ThreadPool : 스레드를 효율적으로 사용 할 수 잇도록 관리하는 기술  개념

  6) Semaphore :   개념1, 예제1

     - 제한된 자원을 효율적으로 활용하기 위한 기술 

     - 실행할 수 있는 스레드 수를 제어하기 위한 카운터 제공