나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

thread 3

[multi thread] CountDownLatch

지난 글에서는 Semaphore(이하 세마포어)를 알아봤다. 이번에는 Thread의 동시 실행과 관련된 기능을 하지만 차이가 있어 헷갈리는 CountDownLatch(이하 래치)를 정리한다. 세마포어는 동시에 실행할 수 있는 스레드 수를 조절해서 고정된 리소스의 사용을 제한할 수 있었다. 이해하기 쉽게 예를 들자면, 어떤 공연의 좌석이 정해져 있는데 입구에서 관리자가 좌석 만큼의 인원만 수용하도록 체크하는 것과 같다. 그에 비해 래치는 경마장에서 출발 선상에 있는 말들이 모두 오기를 기다리는 것과 같다. 모든 말이 출발 준비를 마치고 출발선에 오면 경주가 시작되듯 그 시점까지 기다리게 한다. 래치를 생성할 때 수행할 스레드 수를 지정한다. 그리고 await 메서드를 실행하는데, 이 지점에서 모든 스레드가..

Language/Java 2020.06.04

[multi thread] Semaphore

이전에 java.util.concurrent에 포함된 유용한 동기화 클래스들을 정리한 적이 있다. 해당 글은 다음 링크에서 확인할 수 있다. 동기화 클래스들이 더 있는데 이번 글에서는 Semaphore(이하 세마포어)에 대해서 정리한다. 세마포어는 특정 자원이나 특정 연산을 동시에 사용하거나 호출할 수 있는 스레드의 수를 제한하고자 할 때 사용한다. 자원 풀이나 컬렉션의 크기에 제한을 두고자 할 때 유용하다. 세마포어는 생성자에 퍼밋의 숫자를 받아서 해당 수 만큼 동시 사용을 허용한다. 더보기 permit을 사전에서 찾아보면 다음과 같은데 특정 수 만큼 허가증을 발급한다고 이해하자. [불][가]〔…의〕 인가(서), 허가(증), 면허(장) (※특히 여행·노동·수출 등 기한이 있는 것을 말함), 감찰〔for..

Language/Java 2020.06.02

[multi thread] java.util.concurrent Part 1

Java에서는 멀티스레드 프로그램을 작성하는데 도움이 되는 많은 클래스들을 구현해 놓았다. java.util.concurrent 패키지 안에 포함되어 있는데 패키지 내용을 잘 설명한 IBM의 문서가 있어서 이해한 만큼 한글로 정리해 보고자 한다. 1. TimeUnitTimeUnit는 class가 아닌 Enum 타입이다. TimeUnit을 사용하면 코드를 읽기 쉽도록 만들어 준다. Java 개발자가 millisecond 단위의 숫자로 코드를 지저분하게 하는 대신 사용하면 좋다. MILLISECONDS, MICROSECONDS에서부터 DAY, HOURS에 이르기까지 개발자가 다루고자 하는 대부분의 범위의 시간을 표현할 수 있다. 또한 enum에 구현된 함수를 통해 시간 단위 변환을 쉽게 해준다. 2. Cop..

Language/Java 2019.01.04
반응형