4. 라이브러리 활용 (5) 스레드(thread)
- 프로세스(process, 실행중인 프로그램)내에서 실제로 작업을 수행하는 주체를 말한다
- 경량 프로세스로서 동시에 여러개의 명령문들을 실행할 수 있다.
- 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다.
1) Thread 클래스
- 스레드 형태로 실행할 객체를 구현할 때 상속받는 객체
- 스레드로서 동작할 실행문은 run( ) 메소드에 구현한다
- run( ) 메소드 실행: 객체 생성 후 start( ) 메소드를 호출
2) Runnable 인터페이스
- 스레드 형태로 실행할 객체를 구현할 때 상속받는 객체
- 스레드로서 동작할 실행문은 run( )메소드에 구현한다
- run( ) 메소드를 실행하기 위해 스레드 클래스를 생성해야 한다
- 스레드 클래스 생성시 인자 값으로 Runable 상속하는 객체를 전달한다
- run( ) 메소드 실행: 생성된 스레드 클래스의 start( ) 메소드를 호출
3) Thread 설정
- 스레드를 제어하기 위해 스레드에 setName( )으로 이름을 지정할 수가 있다
- 동시에 실행되는 여러 스레드는 setPriority( )로 실행되는 우선 순위를 지정할 수 있다
1) 동기화란?
- 하나의 자원을 여러 스레드가 동시에 사용할 때 자원의 안전성을 확보하기 위해 처리하는 기능
2) 특정 객체 : synchronized(객체이름)으로 특정 객체에 대하여 동기화를 지정할 수 있다
3) 메소드 : 선언 부에 synchronized를 선언하여 메소드 단위로 동기화를 지정할 수 있다
4) 스레드 상태
- Runnable : 실행을 하기 위한 대기 상태
- Running : 현재 실행 중인 상태
- Terminated : 실행을 종료한 상태
1) 스레드 대기상태 : wait( )
스레드 대기상태 해제 : notify( ), notifyAll( )
2) join( ) : 특정 스레드의 실행 종료를 기다리는 메소드
3) sleep( ) : 인자로 지정된 시간동안 스레드의 실행을 잠시 멈춤
4) interrupt( ) : 스레드의 상태를 종료 시킨다
5) ThreadPool : 스레드를 효율적으로 사용 할 수 잇도록 관리하는 기술 개념
- 제한된 자원을 효율적으로 활용하기 위한 기술
- 실행할 수 있는 스레드 수를 제어하기 위한 카운터 제공