KDT/TIL

2022-08-01 (Mon)

imname1am 2022. 8. 1. 23:16
반응형

[11. 제네릭과 컬렉션]

PropertiesEx.java

좌항 : key / 우항 : value


[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()  스레드가 끝날 때까지 대기

 

반응형