[국비학원 기록/자바] 쓰레드01. 프로세스, 스레드(Thread)장점, 단점,우선순위
my code archive
article thumbnail
반응형

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

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형