프로세스와 프로세서, 쓰레드 개념알기

2022. 10. 30. 21:46·CS 이론
728x90

프로세서는 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;//보통 우선순위
728x90

'CS 이론' 카테고리의 다른 글

객체지향과 캡슐화  (0) 2023.05.02
SOLID 원칙이란?  (1) 2023.04.12
네트워킹 이해하기  (0) 2022.12.05
자바의 입출력(I/O)  (0) 2022.11.12
Thread 실행제어와 상태  (1) 2022.11.07
'CS 이론' 카테고리의 다른 글
  • SOLID 원칙이란?
  • 네트워킹 이해하기
  • 자바의 입출력(I/O)
  • Thread 실행제어와 상태
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    그래프 순회
    뛰슈
    백준
    Spring
    JPA
    나는 감자
    절개와지조
    프리코스
    8기
    어렵다
    모각코
    누적합
    자바
    티스토리챌린지
    감자
    타임리프
    DFS
    회고록
    BFS
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
프로세스와 프로세서, 쓰레드 개념알기
상단으로

티스토리툴바