티스토리 뷰
16장 스레드
* 스레드 : 프로그램의 명령처리 흐름
* 프로세스 : 프로그램 실행의 최소 단위, 최소 하나의 스레드를 가짐
* 병렬 처리 : 두개이상의 명령문을 동시에 수행
* 병렬 처리 구현방법
1. 다중 프로세스
- 각 프로세스가 별도의 메모리 공간을 할당 받기 때문에 각 프로세스간에 데이터를 어떻게 주고 받을 것인지가 이슈(IPC)
↓ |
↓ |
2. 다중 스레드
- 각 스레드들이 하나의 프로세스 안에서 공통 된 메로리 공간을 공유하기 때문에 교통정리가 이슈
↓ ↓ |
스레드 클래스
프로그램이 실행되면 처음 만들어지는 기본스레드(main thread)는 메인함수를 한번 실행하는 작업을 수행
void start() - 스레드 객체의 start 메소드가 호출되면 새로운 명령처리 흐름이 생성
파생스레드 - run함수를 한번 실행하는 작업을 수행
스레드 생성(구현) 방법
테스트>>
스레드 객체의 start가 호출되면 파생 스레드가 하나 만들어져서 해당 객체가 갖고있는 run함수를 실행함
run함수를 Counting클래스가 재정의 했으므로 실제 실행되는 run함수는 동적바인딩에 의해 Counting의 메소드 실행
{ 결과값
0
1
2
3
4
5
6
7
8
9
}
테스트2>>
스레드 객체를 만들때 Runnable을 구현한 클래스의 객체를 넘겨주면 start에서 실행할 run함수를 Runnable구현한 클래스객체의 메소드 실행
스레드 상태
생성 - 실행 - 중지 - 완료
동기화 키워드
synchronized
중지 키워드
sleep()
wait() - notify()