본문 바로가기
네이버클라우드캠프

네이버클라우드캠프 14일차(2/13)

by 하루지오 2024. 2. 13.

1.Thread(스레드)

1)개념

- 실, 흐름, 맥락
- 코드 실행의 흐름
-  main Thread : main 메서드를 실행 
- 일반적인 웹에서는 웹서버에서 사용
- 컴퓨터 상에서 여러가지 일을 동시에 해야 할 때, main tread 외에 work thread를 더 추가로 생성해서 일을 시킴(=노예 추가)
 

2) 생성 방법

- 상속 extents
-인터페이스 implements
 

3) 실행 지연

- sleep
- join
 

4) 동기화

- 멀티 스레드 사용 시, 스레드의 제어권은 정해져 있지 않음
→언제든 다른 스레드에 제어권이 넘어감(context ) 
→값의 왜곡이 충분히 발생할 수 있음
- 그래서 스레드 간의 rule을 세움(=동기화 처리)
- 연산의 안전한 마무리까지 스레드 제어권을 유지해야 함
- 윈도우는 스레드 배분 시간이 부정확함

5) 스레드 종료

- 계속 동작해야 하는 스레드에서 while문을 종종 사용
* 이 스레드를 종료하기 위해서는 boolean stop을 사용하면
* stop이 true일 때 이상 만복되지 않고 종료
* printThread.setStop(true);
- InterruptedException 사용
*thread에 run()을 InterruptedException를 throw함\
 

2. 데몬 스레드(종속 스레드, Daemon Thread)

- 부모 스레드가 종료되면 자식도 함께 종료
- 일반적으로는 자식 스레드는 부모와 별개로 동작
- 불편해서 그냥 별개로 동작하도록 만들었고 setDaemon(true)일 때 종속적이도록 만듦
 

3. 스레드 풀

- 스레드 객체를 많이 만들어서 모아두는 곳
- 속도 향상을 위해 미리 만들어두고 사용
- 대용량 서버를 만들 때 사용(?)
- like 식당 테이블 회전률
- 종류

  1. Runnable: ExecutorService, void, 리턴 값 없음
  2. Callable: Furture 객체, 리턴 값 있음