강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ehdejdrnfl5864
ehdejdrnfl5864

câu hỏi đã được viết

Lập trình Java thực tế của Kim Young-han - Nâng cao phần 1, đa luồng và đồng thời

Lý do cần bộ sưu tập đồng thời 3 - Đồng bộ hóa

자바 동시성 현업에서 사용예시가 궁금합니다

Viết

·

31

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예
3. 질문 잘하기 메뉴얼을 읽어보셨나요?예

[질문 내용]

안녕하새요 강사님 수업내용이 너무 알차서 정말 잘 듣고 있습니다 근데 하나 궁금한 점이 생겨서요!
요즘 백엔드는 서버가 여러대인 환경이라 각 서버의 메모리가 공유되지 않아서 자바에서 서로 락을 걸어도 서로의 RAM이 다르기때문에 재고쪽 문제에서 생기는 좋아요 수라던가 재고 같은 문제는 자바 쪽 락보다는 DB의 낙관적락 또는 비관적 락으로 막아주는경우가 많다고 보게 되었는데 또 다른 예시로는 버튼을 따닥 해서 여러 요청이 들어오는 경우도 자바 스레드 제어보다는 DB에서 유니크 키로 막을수 있다고 생각이 드는데 그렇다면 현업에서 ConcurrentHashMap이나 Atomic, synchronized 같은 자바 동시성 기술은 구체적으로 어떤 상황에서 필수적으로 사용되나요?

DB 부하를 줄이기 위래 또는 성능 최적화를 위해 멀티스레드를 어떻게 활용하는지도 궁금합니다 !

java객체지향동시성multithreadthread

Câu trả lời 1

0

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

안녕하세요. kkkkhh님

재고나 포인트 같은 글로벌 데이터는 말씀하신 대로 DB 락이나 Redis가 맞습니다.

그럼에도 자바 동시성 기술은 각 서버의 성능 최적화를 위해 필수적입니다.

1. 로컬 캐싱 & 버퍼링: DB 부하를 줄이기 위해 조회수를 메모리에 모아 한 번에 저장Atomic)하거나, 공통 데이터를 캐싱ConcurrentHashMap)할 때 사용합니다.

2. 비동기 & 병렬 처리: 이메일 발송 같은 작업을 별도 스레드로 빼거나, 여러 데이터를 동시에 조회해(CompletableFuture) 사용자 응답 속도를 획기적으로 높일 때 사용합니다.

요약하자면 DB는 데이터 정합성을, 자바 기술은 서버 내부의 효율과 속도를 책임진다고 보시면 됩니다.

감사합니다 🙂

Hình ảnh hồ sơ của ehdejdrnfl5864
ehdejdrnfl5864

câu hỏi đã được viết

Đặt câu hỏi