프로세서는 CPU나 MicroProcessor라는 하드웨어의 의미이다.
프로세스는 메모리에 적재되어 프로세서에 의해 실행 중인 프로그램이다. 자원과 쓰레드로 구성된다.
프로세스는 프로그램의 단위라고 생각하는 것이 쉽다.
쓰레드는 한 프로그램(프로세스)에서 각각의 일(기능) 등을 말한다. 즉, 일의 단위이다.
그래서 모든 프로세스는 적어도 하나의 쓰레드를 가지고 있다.
프로세스라는 리스트에 들어있는 쓰레드를 프로세서가 하나씩 꺼내서 처리한다고 생각할 수 있다.
멀티 태스킹(멀티 프로세싱) : 동시에 여러 프로세스를 실행하는 것
멀티 쓰레딩 : 하나의 프로세스 내에 동시에 여러 쓰레드를 실행 시키는 것
- 프로세스를 생성하는 것보다 쓰레드를 생성하는 비용이 적다.
- 같은 프로세스 내의 쓰레드들은 서로 자원을 공유한다. ( 전역변수를 사용한다)
하나의 프로세서(CPU, 싱글코어)는 최대 하나의 쓰레드를 동시에 수행할 수 있다.
-하나의 쓰레드가 휴식중일 때, 다른 쓰레드에 들어있는 내용을 처리할 수 있다는 의미다.
멀티코어를 사용하면 여러 쓰레드를 동시에 수행할 수 있다.
싱글 쓰레드와 멀티 쓰레드
싱글 쓰레드는 하나의 쓰레드만을 프로세스 내에서 사용하는 것이다.
멀티 쓰레드는 여러 쓰레드를 프로세스 내에서 사용하는 것이다.
쓰레드 구현 방법
Thread클래스를 상속하는 클래스를 만든다.(이 경우에 자바에서는 다중 상속이 불가능해서 다른 클래스 상속은 불가능하다.)
Thread클래스를 상속하면 run()메서드를 오버라이딩 하여서 수행할 쓰레드를 정의한다.
Runnable인터페이스를 구현하는 방법 - Runnable인터페이스의 추상메서드 run()을 구현한다.
Runnable인터페이스를 사용하는 이유는 다중 상속이 불가능한 자바에서 쓰레드를 사용하고 다른 클래스를 상속받기 위함이다.
class MyThread extends Thread{
@Overriding
public void run(){
...
}
}
class MyThread2 implements Runnable{
@Overriding
public void run(){
...
}
}
MyThread t1 = new MyThread();
t1.start();
Runnable r = new MyThread2()
Thread t2 = new Thread(r);
t2.start();
Runnable 인터페이스는 함수형인터페이스이기 때문에 람다식으로 바꾸어도 상관없다.
start()메서드와 run()메서드의 차이점은?
start()메서드는 새로운 쓰레드를 생성하는 메서드다.
run()메서드는 쓰레드를 실행하는 메서드이다.
쓰레드의 우선순위 설정
작업의 중요도에 따라서 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있다.
void setPriority(int priority)//우선순위 지정
int getPriority()//우선순위 반환
public static final int MAX_PRIORITY = 10;//최대 우선순위
public static final int MIN_PRIORITY = 1;//최소 우선순위
public static final int NORM_PRIORITY = 5;//보통 우선순위
'CS 이론' 카테고리의 다른 글
객체지향과 캡슐화 (0) | 2023.05.02 |
---|---|
SOLID 원칙이란? (1) | 2023.04.12 |
네트워킹 이해하기 (0) | 2022.12.05 |
자바의 입출력(I/O) (0) | 2022.11.12 |
Thread 실행제어와 상태 (0) | 2022.11.07 |