2022 / 9 / 23 금
- 프로세스
- 스레드
- 동기화 메소드, 동기화 블록
✔ 프로세스
실행 중인 하나의 프로그램을 프로세스라고 부른다.
실행 하고 있는 프로그램은 다중 프로세스를 만들기도 한다.
▼ 크롬 창을 여러개 실행한다면 여래개의 크롬 프로세스가 생성된다 !
✔ 스레드
멀티 태스킹
두가지 이상의 작업을 동시에 처리하는 것
멀티 프로세스 | 멀티 스레드 |
독립적으로 프로그램을 실행하고 여러 작업을 처리 | 한 개의 프로그램을 실행하고 내부에서 여러 작업을 처리 |
PPT와 엑셀을 동시에 사용하는중에 엑셀에 오류가 생겨 프로그램이 꺼져도 PPT는 정상 실행 된다. |
카카오톡을 사용하는 중에 카톡 채팅방에 오류가 생긴다면 카톡 프로세스 자체가 종료된다. |
메인 스레드
모든 자바 프로그램은 메인 스레드 ( main thread )가 main( ) 메소드를 실행하며 시작된다.
✨ 메인 스레드는 작업 스레드를 만들어 병렬로 코드를 실행 할 수 있다. -> 그렇기에 멀티 태스킹 가능하다는 것
싱글 스레드 | 멀티 스레드 |
메인 스레드 종료시 프로세스 종료 | 실행 중인 스레드가 한개라도 있다면, 프로세스가 종료되지 않는다. |
🔔
멀티 스레드로 실행되는 프로그램을 개발하기 위해서는
몇개의 작업을 병렬로 실행할지 우선 결정해야한다 !
그 후 각 작업별로 스레드를 생성한다.
작업 스레드 생성 방법
1. Thread 클래스로 직접 생성
2. Thread 하위 클래스로부터 생성
스레드 이름
스레드 이름은 디버깅할때 어떤 스레드가 어떠한 작업을 하는지 조사할 목적으로 사용된다.
메인 스레드 이름 | main |
내가 생성한(작업) 스레드 이름 (자동생성된다) | Thread-n(스레드의 번호) |
작업 스레드 이름 알기 | thread.getName( ); |
작업 스레드 이름 변경 | thread.setName("스레드 이름"); |
현재 스레드 객체 참조값 얻기 | Thread thread = Thread.cuurentThread( ); |
스레드 우선순위
멀티 스레드는 동시성 또는 병렬성으로 실행된다. | |
동시성 | 병렬성 |
멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행 |
멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행 |
🔔 스레드 스케줄링
스레드의 개수가 코어의 수보다 많을 경우, 스레드를 어떤 순서로 동시성 있게 실행할것인가를 결정해야한다.
1. 우선 순위 방식 (Priority)
우선 순위가 높은 스레드가 실행 상태를 더 많이 갖는다.
우선순위는 1 ~ 10까지 부여되며 기본적으로 5의 우선순위를 할당받는다.
2. 순환 할당 방식 (Round - Robin)
시간 할당량을 정해서 하나의 스레드를 정해진 시간만큼 실행하고 이후에 다른 스레드를 실행한다.
✔ 동기화 메소드, 동기화 블록
사용중인 스레드를 다른 스레드가 변경하지 못하도록 하기 위해서는
스레드 작업이 끝날 때까지 객체에 잠금을 걸어야한다 !
멀티 스레드 프로그램에서 단 하나의 스레드만 실행 할 수 있는 코드 영역을 임계 영역(critical section)이라고 한다.
'🏃♀️ Do it ! > TIL' 카테고리의 다른 글
스레드 그룹 / 스레드폴 / 컬렉션 프레임워크 (0) | 2022.09.27 |
---|---|
스레드 상태 / 데몬 스레드 (0) | 2022.09.26 |
Date , Calendar 클래스/ Format 클래스 / java.time 패키지 (1) | 2022.09.22 |
String / StringTokenizer / StringBuffer , Builder / 정규표현식 , Pattern / Arrays / Wrapper 클래스 (0) | 2022.09.21 |
예외 처리 / 자바 API / Object 클래스 / class 클래스 / tomcat설치 (0) | 2022.09.20 |