반응형
[11. 제네릭과 컬렉션]
PropertiesEx.java
[12. 멀티 스레드]
멀티 스레드 개념 (p.577)
Process | 프로그램이 메모리 획득하고, PID를 가진 상태 ( =코드의 실행) |
Multi-Process | 동시에 여러 개의 Process가 수행되는 것 |
Processor | CPU |
Multi-Processor | 여러 개의 CPU 동시에 수행 |
Thread | 프로그램이 수행 될 수 있는 최소한의 단위 ( =코드의 실행 흐름) |
Multi-Thread | 여러 Thread가 동시에 수행 (Function 단위로 실행) |
▶ 멀티 태스킹 : 2가지 이상의 작업 동시에 처리하는 것
▶ 스케줄링 : 한 CPU에서 프로세스 간 자원/실행시간 배정
작업 스레드 생성과 실행
① Thread 클래스로부터 직접 생성 (implements Runnable) (p.581)
▷ Runnable 구현 객체 생성 후, 이것을 매개값으로 해서 반드시 Thread 생성자 호출해야
class RunnableB implements Runnable {
public void run() {
...
}
}
RunnableB rb = new RunnableB(); // 객체 rb 생성
Thread tb = new Thread(rb); // rb를 매개변수로 스레드 객체 tb 생성
tb.start(); // 스레드 시작
② Thread 하위 클래스로부터 생성 (extends Thread)
class ThreadA extends Thread { // Thread 클래스로부터 상속
@Override
public void run() {
...
}
}
ThreadA ta = new ThreadA(); // 스레드 객체 생성
ta.start(); // 스레드 시작
동기화 블록 (synchronized)
스레드가 사용 중인 객체를 다른 스레드가 변경할 수 없도록
작업이 끝날 때까지 객체에 잠금을 걸어 다른 스레드가 사용할 수 없도록 하는
(= 한 시점에 하나의 태스크만 사용)
- Thread 클래스의 메서드
void sleep(long msec) | 밀리 초 동안 대기 |
throws InterruptedException | 나노 초 동안 대기 |
String getName() | 스레드의 이름 반환 |
void start() | 스레드를 시작시킴 (run() 호출) |
void run() | 스레드가 실행할 부분을 기술 (하위 클래스에서 오버라이딩 되어야) |
void join() | 스레드가 끝날 때까지 대기 |
반응형
'KDT > TIL' 카테고리의 다른 글
2022-08-09 (Tue) (0) | 2022.08.14 |
---|---|
2022-08-08 (Mon) (0) | 2022.08.13 |
2022-08-05 (Fri) (0) | 2022.08.13 |
2022-08-04 (Thu) (0) | 2022.08.07 |
2022-08-03 (Wed) (0) | 2022.08.03 |