자바 8에는 다양한 기술들을 살펴보려고 하는데, 그 여덟 번째는 CompletableFuture이다. 그 전에 이 글들을 먼저 살펴보고 오자. 2022.02.07 - [Computer Science/JAVA] - java에서 멀티쓰레드 [1] Thread와 Runnable java에서 멀티쓰레드 [1] Thread와 Runnable CompletableFuture를 알기 전에 Concurrent 프로그래밍을 꼭 알아야 한다. Concurrent 소프트웨어란 말 그대로 동시에 여러 작업을 할 수 있는 소프트웨어를 뜻한다. 자바에서는 다음과 같은 Concurrent 프로그 kkoon9.tistory.com 2022.02.07 - [분류 전체보기] - java에서 멀티쓰레드 [2] Executors와 Exec..
문제 알고리즘 유치원 선생님인 영희는 간식시간이 되자 아이들에게 사탕을 나누어 주려고 하였다. 하지만 욕심 많고 제멋대로인 유치원 아이들은 차례대로 받으라는 선생님의 말을 무시한 채 마구잡이로 사탕을 집어 갔고 많은 사탕을 집어 간 아이가 있는가 하면 사탕을 거의 차지하지 못하고 우는 아이도 있었다. 말로 타일러도 아이들이 말을 듣지 않자 영희는 한 가지 놀이를 제안했다. 일단 모든 아이들이 원으로 둘러 앉는다. 그리고 모든 아이들은 동시에 자기가 가지고 있는 사탕의 절반을 오른쪽 아이에게 준다. 만약 이 결과 홀수개의 사탕을 가지게 된 아이가 있을 경우 선생님이 한 개를 보충해 짝수로 만들어 주기로 했다. 흥미로워 보이는 이 놀이에 아이들은 참여 했고 이 과정을 몇 번 거치자 자연스럽게 모든 아이들이 ..
CompletableFuture를 알기 전에 Concurrent 프로그래밍을 꼭 알아야 한다. Callable과 Future를 알아보자. Callable Runnable과 다르게 작업의 결과를 리턴할 수 있다. Future 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. import java.util.concurrent.*; import static java.lang.Thread.*; public class App { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executors.newSingleThreadExec..
CompletableFuture를 알기 전에 Concurrent 프로그래밍을 꼭 알아야 한다. Thread와 Runnable을 쓰긴 하지만 직접 쓰진 않고 고수준의 작업들을 Executors를 사용한다. Executors로 Thread를 만들고 Runnable만 제공해주면 된다. 실제로는 Executors가 아닌 Executors를 상속받는 ExecutorService를 사용한다. package java.util.concurrent; public interface ExecutorService extends Executor {} 자바 5부터 제공되는 인터페이스이다. Callable도 실행할 수 있으며, Executors를 종료시키거나, 여러 Callable을 동시에 실행하는 기능을 제공한다. Executo..
CompletableFuture를 알기 전에 Concurrent 프로그래밍을 꼭 알아야 한다. Concurrent 소프트웨어란 말 그대로 동시에 여러 작업을 할 수 있는 소프트웨어를 뜻한다. 자바에서는 다음과 같은 Concurrent 프로그래밍을 지원한다. 멀티프로세싱 (ProcessBuilder) 멀티쓰레드 멀티쓰레드 디폴트 쓰레드는 Main이라는 이름을 가진다. public class App { public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); } } // 실행결과 main 다음으로는 쓰레드를 직접 만드는 방법을 살펴보자. 1. 상속 public class App { public s..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/CYtoZ/btsp3lTLMgH/9qUPE8QnysARyl24gTxIw1/img.jpg)
서비스 운영이 쉬워지는 aws 인프라 구축 가이드 책을 읽고 공부한 내용을 정리한 글입니다. 운영 서버란 개발이나 테스트 목적이 아닌 실제 사용자들을 대상으로 서비스하는 서버를 말합니다. 운영 서버는 테스트 서버와는 다르게 다음과 같은 세 가지를 특징으로 가져야 합니다. 트래픽 대응 빠른 응답 속도 높은 가용성 운영 서버 관리의 세 가지 환경 구성 코드 배포 모니터링 1. 환경 구성 운영 서버 관리의 첫 번째 단계인 환경 구성에 대해 알아봅시다. 자주 사용 되는 아키텍처 [1]. 단일 서버 운영 서버 아키텍처의 가장 기본적인 구성인 단일 서버 아키텍처입니다. 💥단일 서버의 문제점 전체 서비스에 장애가 생길 확률이 높습니다. 서버 자원을 효율적으로 사용하기 어렵습니다. 보안성이 떨어집니다. 스케일 아웃이 ..
자바 8에는 다양한 기술들을 살펴보려고 하는데, 그 일곱 번째는 Date와 Time API이다. 등장 배경 그 전까지는 java.util.Date 클래스나 java.util.Calendar 클래스를 사용했다. 위 클래스에는 다음과 같은 문제점이 있다. mutable 하기 때문에 thread safe 하지 않다. 클래스 이름이 Date임에도 불구하고 시간(Time)까지 가진다. 월이 0부터 시작하여 버그를 초래할 가능성이 높다. 그렇기 때문에 Calendar 클래스 내에 있는 상수를 사용해야 한다. 이펙티브 자바에서 나오는 [아이템 50]에서도 Date 클래스는 절대 사용하지 말라고 나와 있다. 자바 8에서 제공하는 시간 API 이펙티브 자바에서 나오는 [아이템 50]에서도 언급하지만 Date 대신 불변인..
자바 8에는 다양한 기술들을 살펴보려고 하는데, 그 여섯 번째는 Optional이다. 등장 배경 자바에서는 NullPointerException을 종종 보게 된다. 그 이유는 말 그대로 null 체크를 깜빡했기 때문이다. Student 클래스를 예로 들어보자. public class Student { private int id; private String name; private String subject; public Student() { } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setSubject(String subject) { this.su..
- Total
- Today
- Yesterday
- 코테
- AWS
- 백준
- Olympiad
- MSA
- 이팩티브 자바
- 클린 코드
- 디자인패턴
- kotest
- Kotlin
- 알고리즘
- 이펙티브 자바
- node.js
- 정규표현식
- JPA
- 프로그래머스
- Java
- BAEKJOON
- Effective Java
- 테라폼
- programmers
- BOJ
- kkoon9
- Spring
- 클린 아키텍처
- 디자인 패턴
- Spring Boot
- C++
- 객체지향
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |