이번에는 자바8에 추가된 CompletableFuture에 대해 알아보도록 하겠습니다. 1. CompletableFuture에 대한 이해 [ Future의 단점 및 한계 ] Java5에 Future가 추가되면서 비동기 작업에 대한 결과값을 반환 받을 수 있게 되었다. 하지만 Future는 다음과 같은 한계점이 있었다. 외부에서 완료시킬 수 없고, get의 타임아웃 설정으로만 완료 가능 블로킹 코드(get)를 통해서만 이후의 결과를 처리할 수 있음 여러 Future를 조합할 수 없음 ex) 회원 정보를 가져오고, 알림을 발송하는 등 여러 작업을 조합하거나 예외 처리할 수 없음 Future는 외부에서 작업을 완료시킬 수 없고, 작업 완료는 오직 get 호출 시에 타임아웃으로만 가능하다. 또한 비동기 작업의 ..
Language/Java
Map 인터페이스에서 Java 8 버전에 추가된 일부 API에 대해 살펴봅니다. putIfAbsent() compute() computeIfPresent() computeIfAbsent() getOrDefault() 해당 코드는 Map 인터페이스의 구현체인 HashMap을 기준으로 정리하였습니다. 1. putIfAbsent(K key, V value) Map - putIfAbsent() putIfAbsent() 메서드는 네이밍에서 유추할 수 있듯이, 다음과 같이 동작합니다. Key가 존재할 경우: Value 변경 없이 기존에 존재하는 Key의 Value를 리턴합니다. Key가 존재하지 않는 경우: Key에 해당하는 Value를 저장한 후 null을 리턴합니다. HashMap - putIfAbsent() ..
시작하기전 예제코드는 여기에 있습니다. JUnit5 문서기반으로 번역과 공부하고, 실졔로 사용하면서 필요한 내용을 조금 보강했습니다. 다른 곳에 공유해도 좋지만, 출처만 남겨주시면 됩니다. JUnit5 이전 JUnit 버전과 다르게, JUnt5는 세개의 서브 프로젝트로 이루어져 있다. JUnit5은 JUnit Platform + JUnit Jupiter + JUnit Vintage 이 세개가 합친 것이다. JUnit Platform JUnit Platform은 JVM에서 테스트 프레임워크를 실행하는데 기초를 제공한다. 또한 TestEngine API를 제공해 테스트 프레임워크를 개발할 수 있다. JUnit Jupiter JUnit Jupiter는 JUnit 5에서 테스트를 작성하고 확장을 하기 위한 새로..
윈도우에 OpenJDK17을 설치하기 위해 아래 URL에 접속하여 OpenJDK 17 압축파일을 다운로드 한다. Java Platform, Standard Edition 17 Reference Implementations Java Platform, Standard Edition 17 Reference Implementations The official Reference Implementation for Java SE 17 (JSR 392) is based solely upon open-source code available from the JDK 17 Project in the OpenJDK Community. The binaries are available unde jdk.java.net 다운로드한 파..
openjdk 설치 brew install openjdk@17 openjdk path 환경 변수 등록 sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk zsh를 사용한다면 zsh에도 등록 echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc shell 설정의 변경사항 적용 source ~/.zshrc 적용 되었는지 확인 java -version