비동기

· Java
리액티브 스트림이란? 리액티브 프로그래밍은 리액티브 스트림을 사용하는 프로그래밍이다. 리액티브 스트림은 잠재적으로 무한의 비동기 데이터를 순서대로 그리고 블록 하지 않는 역압력을 전재해 처리하는 표준 기술이다. 역압력은 발행-구독 프로토콜에서 이벤트 스트림의 구독자가 이벤트를 소비하는 시간이 발행자가 이벤트를 제공하는 속도보다 느릴 때 문제가 발생하지 않도록 보장하는 장치다. 이런 상황이 발생하였을 때 부하가 발생한 컴포넌트가 완전 불능이 되거나 예기치 않는 방식으로 이벤트를 잃어버리는 등의 문제가 발생하지 않는다. 부하가 발생했을 때 발행자가 충분한 알림을 받을 수 있어야 한다. 실제 비동기 작업이 실행되는 동안 시스템에는 암묵적으로 블록 API로 인해 역압력이 제공되는 것이다. 안타깝게도 비동기 작업..
· Java
앞서 Future와 CompletableFuture를 활용해 비동기 작업 처리를 해보았다. 이를 이용해 비동기 작업 파이프라인 만드는 법을 살펴보자. 동기 작업과 비동기 작업 조합하기 만약 음식을 요리하고 완성된 후 접시에 담는다고 가정해보자. List foodNames = List.of("피자", "햄거버", "파스타", "김밥", "떡볶이"); ExecutorService executor = Executors.newFixedThreadPool(Math.min(foodNames.size(), 100), runnable -> { Thread t = new Thread(runnable); t.setDaemon(true); return t; }); List dishFutures = foodNames.stre..
· Java
Future의 단순 활용 Java5 부터는 미래의 어느 시점에 결과를 얻는 모델에 활용할 수 있도록 Future 인터페이스를 제공하고 있다. 비동기 계산을 모델링하는 데 Future를 이용할 수 있으며, Future는 계산이 끝났을 때 결과에 접근할 수 있는 참조를 제공한다. 시간이 걸릴 수 있는 작업을 Future 내부로 설정하면 호출자 스레드가 결과를 기다리는 동안 다른 유용한 작업을 수행할 수 있다. Future는 저수준의 스레드에 비해 직관적으로 이해하기 쉽다는 장점이 있다. Future를 이용하려면 시간이 오래 걸리는 작업을 Callable 객체 내부로 감싼 다음에 ExecutorService에 제출해야 한다. Java8 이전의 예제 코드는 아래와 같다. ExecutorService execut..
· React Native
Promise란? 자바스크립트를 사용하다 보면 빠른 속도, 가독성을 위해 비동기적 작업을 사용할 때가 많다. Promise는 자바스크립트에서 비동기적 작업을 편하게 관리하도록 도와주는 객체이다. 비동기적 작업은 특정 작업이 끝나지 않아도 다음 작업을 시작하는 작업이다. 반대로 동기적 작업은 특정 작업이 끝날때까지 다음 작업을 시작하지 않고 대기하다가 기존 작업이 끝나고 다음 작업을 시작하는 작업이다. Promise 만들기 아래 예제는 callback 함수를 사용하는 비동기적 코드 예시이다. 이런 코드가 많아지면 가독성이 많이 떨어진다. function double(number, callback) { setTimeout(() => { if (!callback) return; const result = nu..
beekei
'비동기' 태그의 글 목록