티스토리 뷰
Producer-Consumer Pattern
생성자-소비자 패턴은 작업물을 가운데 위치 시키고 작업을 생산자와 작업을 처리자를 분리하는 설계 방법이다.
작업을 생성하고 처리하는 부분이 각각 감당할 수 있는 작업을 비동기적으로 처리하여 부하를 조절할 수 있다는 장점을 가진다.
예를 들어, 물건을 주고 받기 위해 물건 보관함을 이용하게 되면 서로 같은 시간에 만나지 않아도 물건을 전달한다 라는 작업을 처리할 수 있다. 이와 같이 비동기적으로 작업 처리를 분할하여 부하를 조절 할 수 있게 된다.
비슷한 맥락의 예시들
- MQ(Message Queue)
- androidx.fragment 에 뷰 통신에 대한 종속성을 분리방법.
- MVVM
구현 코드
Queue

Queue 구현체 ( JobQueue )

Producer ( 공급자 )

Consumer ( 소비자 )

main() 함수

전체 작업 과정
1. Queue에 공급자가 작업물을 넣는다.(PUT)
2. Queue에 작업물이 put 되면 큐 내에 작업물이 한 개 이상이 되기 때문에, Consumer에게 이를 알린다.

3. 대기상태에서 작업 상태과 된 Consumer 들은 Queue 내부에서 작업물을 가져와(POP) 처리한다.

4. Queue 내부 작업물이 비어지게 되면, Consumer는 Moniter에 대기상태가 된다. ( WAIT )

참조
'BackEnd > Java&Kotilin' 카테고리의 다른 글
| API Gateway 란? with.Spring Cloud Gateway (0) | 2022.08.26 |
|---|---|
| 서비스 디스커버리(Service Discovery) 는? (0) | 2022.08.25 |
| [Java]병렬 스트림( Parellel Stream ) (0) | 2022.08.21 |
| [Kotilin] 변수와 함수 선언방법 (0) | 2022.08.16 |
| [Java] 자바의 에러와 예외 (0) | 2022.08.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Clean Architecture
- 클린 아키텍처
- 컴포짓 패턴
- Object Pool
- java
- 외부 단편화
- 육각형 아키텍처
- 뾰족함
- pass by reference
- 동적 타입 언어
- 동적 디스패치
- 수평 분할
- pool
- ATDD
- 내부 단편화
- 세션 불일치
- Sticky Session
- 메모리 파편화
- 장애 해결기
- 객체 풀
- Memory Fragmentation
- Session
- SpringBoot 2.2
- multimap
- 수직 분할
- 메모리 단편화
- 정적 타입 언어
- pass by value
- OOP
- RestAssured
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
글 보관함