본문 바로가기

Spring22

[Spring] CompletableFuture CompletableFuture public class CFuture { public static void main(String\[\] args) throws ExecutionException, InterruptedException { CompletableFuture f = new CompletableFuture(); f.completeExceptionally(new RuntimeException()); //System.out.println(f.get()); - 예외 발생 } } 백그라운드에서 돌아가는 새로운 Thread 생성하기 CompletionStage Class 하나의 비동기 작업을 수행하고 완료됐을 때 의존적으로 다른 작업 수행할 수 있도록 하는 클래스이다. CompletableFuture가 상.. 2021. 2. 28.
[Spring] 스프링의 비동기 기술 스프링의 비동기 기술 스프링에서는 비동기 기술을 어떻게 사용할까? 퀴즈 : 비동기로 바꿔보세요 현재 코드는 run() 로그 출력 후 myService.hello()메서드 실행 후 exit 로그 출력됨. 비동기로 바꿔서, 다른 Thread에서 myService 메서드가 작동하도록 해보세요. @Slf4j @SpringBootApplication public class DemoApplication { @Component public static class MyService { public String hello() throws InterruptedException { log.info("hello()"); Thread.sleep(1000); return "hello"; } } public static void .. 2021. 2. 17.
[Java] 비동기 기초 Future, Callback JAVA의 비동기 기술 본 정리는 토비의봄 8회 리액티브 프로그래밍(4) 자바와 스프링의 비동기 기술을 토대로 정리한 내용입니다. (무려 10년 전 사용하던 기술....현재는 더 좋은 방법이 존재하나 토대를 튼튼히 하는 것이 중요하므로..) 동기와 비동기 동기코드는 어떻게 작성했나? 2초 sleep 후 Hello 출력 Exit출력 public class FutureEx { public static void main(String[] args) throws InterruptedException { ExecutorService es = Executors.newCachedThreadPool(); Thread.sleep(2000); log.info("Hello"); log.info("Exit"); } } log결.. 2021. 2. 10.
[Spring] Reactive Programming 리액티브 프로그래밍 - Reactive Steams Reactive Streams 토비의봄TV 6화 스프링 리액티브 프로그래밍 을 바탕으로 정리한 글입니다. . 목표 Duality(쌍대성)과 Observer Pattern을 통해 ReactiveProgramming이 무엇인지 알아보자. Duality Iterable과 Observable은 Duality(쌍대성) 관계를 갖고있다. 아래 Iterable로 구현한 코드(Pull방식)와 Observable(Push방식)으로 구현한 코드를 비교하며 양립하는 Duality 관계를 알아보자. Iterable for loop를 사용할 수 있는 이유는 Iterable 때문이다. Pull 방식 - it.next()로 value를 끌어오는 방식 Iterable iter = Arrays.asList(1,2,3,4,5); for.. 2021. 2. 10.