프로세서와 쓰레드
13.1~13.2
1. 프로세서와 쓰레드
- 프로세스
- 실행중인 프로그램
- 프로그램을 실행하면 OS로부터 실행에 필요한 자원을 할당받아 프로세스가 됨
- 구성요소
- 프로그램을 수행하는데 필요한 데이터
- 메모리 등의 자원
- 쓰레드
- 쓰레드
- 프로세스의 자원을 이용해서 실제로 작업을 수행
- 모든 프로세스에 하나 이상 존재
- 멀티쓰레드 프로세스
- 둘 이상의 쓰레드를 가진 프로세스
- 프로세스의 메모리 한계가 최대 쓰레드 개수 결정
- 멀티태스킹
- 복수의 프로세스를 동시에 실행
- 멀티쓰레딩
- 단수의 프로세스 내에서 복수의 프로세스를 실행
- 장점
- CPU 사용률 향상
- 자원을 효율적으로 사용
- 사용자에 대한 응답성 향상
- 작업 분리로 코드 간결화
- 쓰레드 교착 상태
- 두 쓰레드가 자원을 점유한 상태에서 서로 상대편이 점유한 자원 사용을 위해 대기하면서 진행이 멈춘 상태
2. 쓰레드의 구현과 실행
-
Thread클래스 상속
class MyThread extends Thread { public void run() {/*작업 내용*/} // thread클래스의 run 오버라이딩 } class Program { public static void main(String args[]) { ThreadEx t = new ThreadEx(); t.start(); } } class ThreadEx extends Thread { public void run() { for(int i = 0; i< 5; i++) { System.out.println(getName()); //조상인 Thread의 getName() 호출 } } }
-
Runnable인터페이스 구현(일반적)
class MyThread implements Runnable { public void run() {/*작업 내용*/} // Runnable인터페이스의 run()을 구현 } class Program { public static void main(String args[]) { Runnable r = new ThreadEx(); Thread t = new Thread(r); t.start(); } } class ThreadEx extends Thread { public void run() { for(int i = 0; i< 5; i++) { // Thread.currentThread() - 현재 실행중인 Thread 반환 System.out.println(Thread.currentThread().getName()); //조상인 Thread의 getName() 호출 } } }
-
Thread의 실행
- Thread의 메서드 start()로 실행 대기
- 실행 대기상태인 Theread는 OS의 스케쥴러에 의해서 실행
Leave a comment