본문 바로가기
카테고리 없음

Java(29) - 멀티스레드

by SeleniumBindingProtein 2022. 1. 28.
728x90
반응형

1. 프로세스(process)
    1) 프로그램 ------> 프로세스 
                 실행
    2) 프로그램이 실행되면 OS(Operating System)로 부터 메모리를 할당받아 프로세스 상태가 됨.
    3) 하나의 프로그램이 여러 개의 프로세스를 만들기도 함.        


2. 멀티 태스킹 (multi tasking)
    1) 통상 두가지 이상의 작업을 동시에 처리하는 것을 칭함.
    2) 구현 방법 
        - 멀티 프로세스 
            - 독립적 프로그램을 여러 번 실행하고 작업을 처리하는 것.
        - 멀티 스레드 


            - 하나의 프로그램을 실행하여, 내부적으로 여러가지 작업을 처리하는 것
                ex) 카카오톡 - 채팅 스레드, 파일 전송 스레드 등...    
            - 소프트웨어 병행 작업 처리를 위해 multi thread를 사용함.    

3. 스레드 (thread) 
    1) 하나의 프로세스는 하나 이상의 thread를 가지게됨.
        - 하나의 프로세스에 여러 개의 스레드 생성 가능.
        - 스레드들은 동시에 실행 가능
        - 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능
    2) 실제 작업을 수행하는 단위.
    3) Light Weight Process 라고도 함.
    4) 프로세스 간에는 각 프로세스의 데이터 접근이 불가.

4. Thread 장점
    1) 사용자에 대한 응답성 향상 => 성능 개선 효과
        - ThreadA : 특정 작업
          ThreadB : 사용자와 커뮤니케이션 
    2) 자원 공유 효율
    3) CPU 활용도를 높임
    4) 작업이 분리되어 코드가 간결 (작성하기 나름)   

5. Thread 단점               
    1) 스레드 중 한 스레드만 문제가 있어도, 전체 프로세스가 영향을 받음.
    2) 스레드를 많이 생성하면, 모든 스레드를 스케쥴링해야 하므로,
       Context Switching이 많이 일어나 성능 저하.
       
6. 메인 스레드 vs 작업 스레드 
    1) 메인 스레드는 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있으며,
       이것이 곧 멀티 태스킹을 수행하는 것임.      

7. 프로세스 종료
    1) 싱글 스레드 : 메인 스레드가 종료하면 프로세스도 함께 종료됨.
    2) 멀티 스레드 : 실행 중인 스레드가 하나라도 있다면, 프로세스 종료되지 않음.
        - 메인 스레드가 작업 스레드보다 먼저 종료되더라도,
          작업 스레드가 계속 실행 중이라면, 프로세스는 종료되지 않음.      

8. 작업 스레드의 이름
    1) 메인 스레드 이름 : main <== JVM이 생성과 동시에 부여함.
    2) 작업 스레드 이름(자동 설정) : Thread-n
    3) 작업 스레드 이름 변경 : thread.setName("스레드 이름");
    4) 코드 실행하는 현재 실행중인 스레드 객체의 참조 얻기
        Thread thread = Thread.currentThread();
        thread.getName()
    5) 개발할 때 디벙깅 과정에서 사용함.    

9. 동시성과 병렬성
    1) 동시성(Concurrency)   


        - 하나의 CPU core가 스레드를 실행했다가 실행대기 시켰다가 
          다른 스레드를 진행시키는 방법임.
        - 멀티작업 위해 하나의 코어에서 멀티 스레드가 번갈어 가며 실행하는 성질.
    2) 병렬성(Parallelism)


        - 멀티개의 코어가 하나씩 스레드를 맡아서 독립적으로 진행하여,
           방해를 받지 않는 특성이 있음.
        - 멀티작업 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질    

10. 스레드 우선 순위
    1) 스레드들이 동시성을 가질 경우 우선적으로 실행할수 있는 순위              
    2) 우선 순위는 1(낮음)에서부터 10(높음)까지로 부여함
        - 모든 스레드의 우선순위는 5의 우선 순위

728x90
반응형

댓글