스레드 풀을 사용하는 이유 병렬처리 작업이 많아지면 스레드의 개수가 증가할 수 있다. 스레드가 매우 많아지게 되면 스레드를 생성하는 작업과 스케쥴링 작업으로 인해 CPU와 메모리 사용량이 늘어나게 되며 결국 애플리케이션 성능이 급격히 저하될 수 있다. 만약 자바로 웹서버를 구성했고 하나의 요청마다 스레드를 생성하는 상황이라고 가정을 했을 때, 만약 수백 수천개의 요청이 들어온다면 스레드도 수백 수천개가 만들어질 것이다. 이렇게되면 요청이 많이 들어올 때 스레드수가많아지므로 애플리케이션 성능이 저하될 수 있다. 따라서 스레드 풀 을 통해 작업 처리에 사용되는 스레드를 제한된 개수만큼만 미리 생성할 수 있다. 최대 스레드의 개수를 정해놓고 작업큐에 들어오는 작업들을 스레드가 하나씩 맡아서 처리하게 된다. 즉..
스레드 우선 순위 동시성과 병렬성은 다르다. 동시성이란 하나의 코어에서 여러개의 스레드가 번갈아가며 실행하는 성질을 의미하며, 병렬성이란 멀티 코어에서 개별 스레드를 동시에 실행하는 것이다. 결과만 보았을 때는 동시성과 병렬성 모두 동시에 실행되는 것 처럼 보이지만 동시성 은 실제로는 하나의 코어에서 하나의 스레드만 실행하고 있고, 번갈아가면서 실행을 하고 있기에 동시에 실행하는 것 처럼 보이는 것 뿐이다. 만약 코어가 매우 많다면 모든 스레드를 멀티 코어에서 돌리면 가장 이상적인 멀티스레드 환경이 될 것이다. 하지만 실제로 코어의 갯수는 정해져 있고 스레드의 개수가 코어의 수보다 많을 경우 스레드 스케쥴링 을 통해 스레드를 어떤 순서로 동시성으로 실행할 것인지 결정하는 것이 필요하다. 스레드 스케쥴링에..
프로그램을 개발하다보면 main스레드 외에 추가적인 스레드가 필요할 때가 있다. 예를들어, 어떠한 데이터를 받아오면서 화면에 출력하는 작업을 동시에 하고자 할 때 하나의 스레드만 사용하게 된다면 모든 데이터를 받아오기 전까지는 화면에 출력하는 작업을 진행하지 못하게 된다. 이때, 데이터를 받아오는 스레드와 화면에 출력하는 스레드를 서로 분리한다면 위 작업을 동시에 실행할 수 있게된다. 이처럼 프로그램을 개발하다보면 멀티스레드 환경이 요구되는 상황이 발생할 수 있다. 자바에서 스레드를 생성하는 방법에는 크게 두가지가 있다. 첫번째는, Thread 클래스로부터 집적 생성하는 방법이며 두번째는, Thread 하위 클래스로부터 생성하는 것이다. Thread 클래스로부터 집적 생성 Runnable 인터페이스를 구..
- Total
- Today
- Yesterday
- typeORM
- 그리디
- 스레드
- 컴퓨터 구조
- BFS
- 동적계획법
- nestjs
- 백준
- nest.js
- 중앙대학교
- 자바
- 시뮬레이션
- 구현
- nodeJS
- boj
- 예외처리
- 재귀
- 투포인터
- 알고리즘
- ReactNative
- 벨만포드
- java
- Computer Architecture
- 자바스크립트
- 세그먼트 트리
- 컴퓨터 통신
- dfs
- node.js
- 그래프
- 백트래킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |