[JAVA] MultiThreading, 멀티스레드

[JAVA] MultiThreading, 멀티스레드

반응형

Java MultiThreading

AtomicInteger

Integer 자료형을 가지고 있는 wrapping 클래스

멀티쓰레드 환경에서 동시성을 보장 (synchronized 보다 적은 비용으로 동시성을 보장)

Reference

LinkedBlockingQueue

한정된 메모리 사용을 위해 초기 Queue Size 세팅

Queue Data(empty/full) 상태에 따라 Thread가 Blocking 할 수 있는 기능 제공

Queue에서 아이템을 가져올 때 비어있으면 null을 리턴하지 않고 아이템이 추가될 때까지 대기

반대로, 아이템을 추가할 때 Queue가 가득차 있으면 공간이 생길 때까지 기다

내부적으로 동시성에 안전하기 때문에 synchronized 구문 없이 사용 가능

Reference

ExecutorService

비동기 작업의 진행 상황을 추적하기 위해 생성할 수 있는 메서드 제공

스레드 풀의 개수 및 종류를 정하여 생성하고 사용할 수 있도록 제공

Reference

CountDownLatch

하나 이상의 스레드가 다른 스레드에서 수행 중인 일련의 작업이 완료될 때까지 대기할 수 있도록 하는 동기화 지원

Reference

Sample Code

from http://data-make.tistory.com/693 by ccl(A) rewrite - 2021-10-15 21:02:10