자바 스레드
포스트
취소

자바 스레드

스레드

  • 멀티 코어 CPU가 대중화되어 자바는 언어 차원에서 병렬 처리를 지원한다
  • 스레드 하나에 CPU의 코어 하나가 할당된다

동기화 처리 임계 영역 : 멀티 스레드 환경에서 단 하나의 스레드만 실행할 수 있는 코드 영역 임계 영역은 곧, 동기화가 적용된 구역이다

  • Synchronized
  • ReentrantLock
  • volatile
  • atomic

스레드 풀

  • 스레드 생성과 소멸은 그 자체로 시스템에 부담을 주는 일
  • 이러한 성능 저하를 피하기 위해 미리 제한된 수의 쓰레드를 생성해두고 이를 재활용하는 스레드 풀을 사용한다

자바가 제공하는 스레드 풀 “ExecutorService”

1
2
- submit 메소드의 인자로 들어가는 구현 객체에 따라 반환값 여부 결정
 Runnable, Callable (+Future)
  • 작업 종료와 관련된 내용이 많다. 궁금하면 찾아보자

##

  • 운영체제에서는 실행중인 하나의 앱을 프로세스라고 부른다
  • 사용자가 앱을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 앱의 코드를 실행하는데, 이것이 프로세스다

멀티 프로세스

1
2
3
4
5
6
7
8
9
- 하나의 앱은 멀티 프로세스를 만들기도 한다
- 예를 들어 메모장 앱을 2개 실행했다면 2개의 프로세스가 생성된 것이다
- 운영체제는 두 가지 이상의 작업을 동시에 처리하는 
 멀티태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히
 할당해주고, 병렬로 실행시킨다
 예를 들어, 워드로 문서 작업을 하면서 메신저도 이용할 수 있다
- 멀티 태스킹이 꼭 멀티 프로세스를 뜻하는 것은 아니다
- 한 프로세스 내에서 멀티 태스킹을 할 수 있도록 만들어진 앱도 있다
 대표적인 예로, 미디어 플레이어와 메신저가 있다
  • 멀티 프로세스는 자신의 메모리를 가지고 실행하므로 서로 독립적이지만, 멀티 스레드는 하나의 프로세스 내부에 생성되므로 스레드하나가 예외를 발생시키면 다른 스레드도 영향을 받는다

멀티 스레드

1
2
3
4
5
- 하나의 프로세스에서 두 가지 이상의 작업을 처리할 수 있음
- 멀티 스레드로 동작하는 메신저의 경우 파일을 전송하는 스레드에서
 예외가 발생하면 메신저 프로세스 자체가 종료되므로 
 채팅 스레드도 같이 종료된다
 그렇기 때문에 멀티 스레드에서는 예외 처리에 만전을 기해야 한다

데몬 스레드

1
2
3
- 스레드의 작업을 돕는 보조 역할을 함
- 예를 들어, 워드프로세서의 자동 저장,
 미디어 플레이어의 동영상 및 음악 재생 등이 있다
  • 자바의 모든 앱은 메인 스레드가 메인 메소드를 실행하면서 시작한다 이때 메인 스레드는 필요에따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있다
  • 즉 멀티 스레드를 생성해서 멀티 태스킹을 수행하는 것이다
  • 멀티 스레드 앱에서는 실행중인 스레드가 하나라도 있다면 메인 스레드가 종료되더라도 프로세스가 종료되지 않는다
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.