Java - Synchronized block(동기화 블록)

synchronized 키워드는 멀티 쓰레드 환경에서 두개 이상의 쓰레드가 하나의 변수에 동시에 접근을 할 때 Race condition(경쟁상태)이 발생하지 않도록 합니다. 만약 Race condition이 발생할 수 있는 code block을 synchronized 키워드로 감싸면, 하나의 쓰레드만 이 code block에 진입할 수 있습니다.

13 Sep 2020

Java - CompletableFuture 사용 방법

CompletableFuture는 Future와 CompletionStage를 구현한 클래스입니다. Future이지만 supplyAsync(), runAsync()를 이용하여 직접 쓰레드를 생성하지 않고 async로 작업을 처리할 수 있습니다. 그리고 여러 CompletableFuture를 병렬로 처리하거나, 병합하여 처리할 수 있게 합니다. 또한 Cancel, Error를 처리할 수 있는 방법을 제공합니다.

16 Jun 2020

Java - CountDownLatch 사용 방법

CountDownLatch는 어떤 쓰레드가 다른 쓰레드에서 작업이 완료될 때 까지 기다릴 수 있도록 해주는 클래스입니다. countDown()이 호출되면 Latch의 수가 1개씩 감소하며, await()은 Latch의 숫자가 0이 될 때까지 기다립니다. 이 두개의 메소드를 이용하여 병렬처리, 멀티쓰레딩으로 작업을 처리하도록 만들 수 있습니다.

15 Jun 2020

Java - AtomicLong 사용 방법

AtomicLong은 Long 자료형을 갖고 있습니다. Thread-safe로 구현되었고, 멀티쓰레드에서 동시성 고려 없이 사용할 수 있습니다. volatile과 다르게 여러 쓰레드에서 값을 write해도 동시성이 보장됩니다. get, set, getAndSet, compareAndSet 등의 함수를 제공해 줍니다.

14 Jun 2020

Java - ArrayBlockingQueue 사용 방법

ArrayBlockingQueue는 Array로 구현된 BlockingQueue입니다. Queue의 크기가 정해져 있기 때문에 무한히 아이템을 추가할 수 없습니다. 추가되는 아이템은 순서가 있으며, FIFO(First In First Out) 순서를 따릅니다. ArrayBlockingQueue는 멀티 쓰레드 환경에서 사용하기 위해 구현되었으며 내부적으로 동시성에 안전합니다.

09 Jun 2020

Java - AtomicReference 사용 방법

AtomicReference는 V 클래스(Generic)의 객체를 wrapping 클래스입니다. AtomicReference 클래스는 멀티쓰레드 환경에서 동시성을 보장합니다. AtomicReference는 synchronized 보다 적은 비용으로 동시성을 보장할 수 있습니다.

17 Jan 2020

Java - FixedThreadPool(ThreadPoolExecutor), 고정된 쓰레드풀 사용 방법

newFixedThreadPool()로 고정된 쓰레드 개수의 쓰레드풀을 생성할 수 있습니다. ThreadPoolExecutor로 리턴되며, 이 Threadpool에 Task를 추가하여 병렬처리할 수 있습니다. shutdown(), shutdownNow(), awaitTermination() 등의 함수를 제공하여 작업이 완료되는 것을 기다릴 수 있습니다.

09 Nov 2019

Java - ScheduledThreadPoolExecutor 사용 방법

ScheduledThreadPoolExecutor는 작업을 일정 시간 뒤에 수행하거나, 일정 dealy 간격으로 주기적으로 실행할 수 있습니다. schedule, scheduleAtFixedRate, scheduleWithFixedDelay 등의 메소드를 제공합니다. Callable이나 Runnable을 인자로 받으며 람다식(Lambda)으로 전달할 수 있습니다.

02 Nov 2019

Java - AtomicInteger 사용 방법

AtomicInteger는 int 자료형을 갖고 있는 wrapping 클래스입니다. 멀티쓰레드 환경에서 동시성을 보장합니다. volatile과 다르게 여러 쓰레드에서 값을 write해도 동시성이 보장됩니다. get, set, getAndSet, compareAndSet 등의 함수를 제공해 줍니다.

01 Nov 2019

Java - AtomicIntegerArray 사용 방법

AtomicIntegerArray는 int[] 자료형을 갖고 있는 wrapping 클래스입니다. 멀티쓰레드 환경에서 동시성을 보장합니다. volatile과 다르게 여러 쓰레드에서 값을 write해도 동시성이 보장됩니다. get, set, getAndSet, compareAndSet 등의 함수를 제공해 줍니다.

01 Nov 2019

Java - AtomicBoolean 사용 방법

AtomicBoolean는 boolean 자료형을 내부에 갖고 있는 wrapping class입니다. 멀티쓰레드 환경에서 동시성을 보장합니다. volatile과 다르게 여러 쓰레드에서 값을 write해도 동시성이 보장됩니다. get, set, getAndSet, compareAndSet 등의 함수를 제공해 줍니다.

27 Oct 2019

Java - ExecutorService를 사용하는 방법

Executors와 ExecutorService를 이용하면 간단히 쓰레드풀을 생성하여 병렬처리를 할 수 있습니다. 어떤 작업들을 병렬로 처리하려면 ExecutorService, SingleThreadExecutor, Future, BlockingQueue를 이용해야 합니다. 예제로 구현 방법을 알아보겠습니다.

25 Jun 2018
codechachaCopyright ©2019 codechacha