맛있는 개발자의 기록 일기
  • 홈
  • 관리창
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기 (84)
      • Java (74)
      • Food (2)
      • Java 기초 (0)
      • Java 심화 (0)
      • Language (4)
        • Java (4)
      • Framework (2)
        • Spring (2)
      • DevOps (1)
        • Git (1)
      • Cloud (1)
        • Amazon Cloud (1)
  • 홈
  • 태그
  • 방명록
Language/Java

[Java] 동시성 이슈 해결하기

동시에 여러 개의 요청이 들어오게 되면, 우리가 원하던 결과값이 나오지 않아 테스트 케이스 작성 시 오류가 발생하는 경우 많다. 이러한 오류를 레이즈 컨디션이라고 한다. 이러한 부분은 어떻게 해결해야 할까? 레이스 컨디션(Race Condition) 레이스 컨디션이란? 두 개 이상의 프로세스가 공통 자원을 병행적으로(ConCurrently) 읽거나 쓸 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 달라지는 상황을 말한다. 그렇다면 레이스 컨디션이 발생하게 된다면 어떻게 될까? 모든 프로세스 원하는 결과가 발생하는 것을 보장할 수 없기 때문에, 이러한 상황은 반드시 피해야만 한다. 중간에 값이 변경되는 경우에는 우리가 예측하기 불가능하고 실제 이런 코드들이 문제를 많..

2023. 8. 1. 16:47
Language/Java

[Java] CountDownLatch

CountDownLatch는 어떤 쓰레드가 다른 쓰레드에서 작업이 완료될 때 까지 기다릴 수 있도록 해주는 클래스입니다. 예를 들어, 우리는 5개의 요청이 모두 끝날때 까지 기다려야 하므로, CountDownLatch를 사용할 것이다. Main thread에서 5개의 쓰레드를 생성하여 어떤 작업을 병렬로 처리되도록 할 수 있습니다. 이 때 Main thread는 다른 쓰레드가 종료되는 것을 기다리지 않고 다음 코드(statements)를 수행합니다. 여기서 CountDownLatch를 사용하면 다음 코드(statements)를 실행하지 않고 기다리도록 만들 수 있습니다. CountDownLatch 사용 방법 CountDownLatch는 다음과 같이 생성할 수 있습니다. 인자로 Latch의 숫자를 전달합니..

2023. 8. 1. 14:25
Language/Java

[Java] Executors / ExecutorService 사용법

자바 Thread 관리의 어려움 자바로 스레드를 생성할 경우에는 아주 기본적으로는 아래와 같이 Thread 클래스와 Runnable 함수형 인터페이스를 구현해 Thread를 생성합니다. 간단한 소스 같은 경우에는 쉽게 관리할 수 있지만 복잡해지는 경우에는 스레드를 사용자가 직접 관리하는 것은 매우 어렵습니다. ex) 인터럽트 관리 이러한 관리의 어려운 문제를 해결하기 위해 스레드를 만들고 관리하는 작업을 위임을 하기 위해 Executors가 등장하게 됩니다. // 람다로 스레드 만들기 Thread thread = new Thread(() -> { System.out.println("Thread Test " + Thread.currentThread().getName()); }); thread.start()..

2023. 8. 1. 14:12
Language/Java

Enum(EnumMap, EnumSet)

자바 1.5 버전부터 새롭게 추가된 열거형 상수로 서로 연관된 상수들의 집합을 의미한다. Enum이란? 연관된 상수들의 집합을 의미합니다. 다시 말해 상수 목록을 담을 수 있는 데이터 타입을 의미한다. 우리가 class로 선언하는 부분에 enum이라고 선언하게 되면, 해당 객체는 상수의 집합이라는 의미를 명시적으로 나타냅니다. java.lang.Enum 클래스 Enum 클래스는 모든 자바 열거체의 조상 클래스입니다. Enum 클래스에는 열거체 조작을 위한 다양한 메서드가 포함되어 있습니다. 1. values() 해당 열거체의 모든 상수를 지정한 배열을 생성해서 반환합니다. 특정 Enum 타입이 가질 수 있는 모든 값을 순회하면서 출력하려면 아래와 같이 하면 됩니다. enum Rainbow {RED, OR..

2023. 7. 6. 12:09
  • «
  • 1
  • »
Powered by Privatenote Copyright © 맛있는 개발자의 기록 일기 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바