1. 프로세스(process)
1)프로그램 ---------> 프로세스
실행
2)프로그램이 실행되면 OS(Operating System)로부터 메모리를 할당받아 프로세스 상태가 됨.
2)하나의 프로그램이 여러 개의 프로세스를 만들기도 함.
2. 멀티 태스킹(multi tasking)
1)통상 두 가지 이상의 작업을 동시에 처리하는 것을 칭함.
2)구현 방법
-멀티 프로세스
-독립적 프로그램을 여러 번 실행하고 작업을 처리하는 것.
-멀티 스레드
-하나의 프로그램을 실행하여 내부적으로 여러 가지 작업을 처리하는 것.
ex)카카오톡-채팅 스레드, 파일 전송 스레드 등....
스레드
3. 스레드(thread)
1)하나의 프로세스는 하나 이상의 thread를 가지게 됨.
-하나의 프로세스에 여러 개의 스레드 생성 가능
-스레드들은 동시에 실행 가능
-프로세스 안에 있으므로 프로세스의 데이터를 모두 접근 가능
2)실제로 작업을 수행하는 단위
3)Light Weight Process라고도 함.
4)프로세스 간에는 각 프로세스의 데이터 접근이 불가.
4. Thread 장점
1)사용자에 대한 응답성 향상
-ThreadA : 특정 작업
-ThreadB : 사용자와 커뮤니케이션
2)자원 공유 효율
3)작업이 분리되어 코드가 간결해진다.(BUT, 작성하기 나름)
5. Thread 단점
1)스레드 중 한 스레드만 문제가 있어도 전체 프로세스가 영향을 받음.
2)스레드를 많이 생성하면 모든 스레드를 스케줄링해야 하므로
Context Switching이 많이 일어나 성능이 저하된다.
6. 메인 스레드 vs 작업 스레드
-메인 스레드는 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있으며 이것이 곧 멀티 태스킹을 수행하는 것임.
7. 프로세스 종료
1)싱글 스레드 : 메인 스레드가 종료하면 프로세스도 함께 종료.
2)멀티 스레드 : 실행 중인 스레드가 하나라도 있다면, 프로세스가 종료되지 않는다.
-메인 스레드가 작업 스레드보다 먼저 종료되더라도
작업 스레드가 계속 실행 중이라면 프로세스는 종료되지 않음.
8. 작업 스레드의 이름
1)메인 스레드 이름 : main <== JVM이 생성과 동시에 부여함.
2)작업 스레드 이름(자동 설정) : Thread-n
3)작업 스레드 이름 변경 : thread.setName("스레드 이름");
4)코드 실행하는 현재 실행 중인 스레드 객체의 참조 얻기
Thread tasking=Thread.currentThread();
thread.getName()
5)개발할 때 디버깅 과정에서 사용함.
9. 동시성과 병렬성
1)동시성(Concurrency)
-하나의 CPU core가 스레드를 실행했다가 실행대기 시켰다가
다른 스레드를 진행시키는 방법
-멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질.
2)병렬성(Parallelism)
-멀티개의 코어가 하나씩 스레드를 맡아서 독립적으로 진행하여,
방해를 받지 않는 특성이 있음.
-멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질
10. 스레드 우선 순위
1)스레드들이 동시성을 가질 경우 우선적으로 실행할 수 있는 순위
2)우선 순위는 1(낮음)에서부터 10(높음)
-모든 스레드의 우선 순위는 5의 우선 순위
->우선순위 설정 안하면 기본은 5
'📒 education archive > 🎀JAVA' 카테고리의 다른 글
[국비학원 기록/자바] 연결 리스트(Linked List) 종류, 구현, 노드 중간 데이터 추가 (0) | 2021.11.07 |
---|---|
[국비학원 기록/자바] 스레드02. 제어 메서드, join(),interrupt(),wait(),notify(),notifyAll() (0) | 2021.10.31 |
[국비학원 기록/자바] 미니 프로젝트, 학점 산출 프로그램, 싱글톤 패턴 (0) | 2021.10.29 |
[국비학원 기록/자바] I/O 입출력, 입력 스트림, 출력 스트림, 기반 스트림, 보조 스트림 (0) | 2021.10.21 |
[국비 학원 기록/자바] 예외처리 종류, try catch, throw, throws (0) | 2021.10.21 |