일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 안드로이드 알림채널
- 안드로이드 알림
- android notification 예제
- notification manager
- 알림 인텐트
- 안드로이드 알림 예제
- notifications
- 알림 우선순위
- setDefaults(NotificationCompat.DEFAULT_ALL)
- notification channel
- 버전별 관리
- NotificationCompat.Builder
- setPriority(NotificationCompat.PRIORITY_HIGH)
- setContentIntent
- 펜딩인텐트
- Pending Intent
- Today
- Total
공부용 블로그
비동기처리, 콜백 함수 본문
(참고) https://joshua1988.github.io/web-development/javascript/javascript-asynchronous-operation/
- 비동기 처리란?
특정 코드의 연산이 끝날때까지 코드의 실행을 멈추지 않고, 다음 코드를 먼저 실행하는 것
비동기 처리 문제 (1)
1) 특정 로직이 끝나고 그 결과를 변수 a에 담는다.
2) return a를 수행한다.
여기서 1)번을 수행 후 결과값을 기다리지 않고 바로 2)번을 실행하기 때문에 return a에 아직 아무값도 담기지 않은 초기값이 출력되게 된다.
비동기 처리 문제 (2)
setTimeout() 문제
setTimeout()은 Web API의 한 종류이다. 코드를 바로 실행하지 않고 지정한 시간만큼 기다렸다가 실행한다.
1) console.log("hello")
2) setTimeout(function () {
console.log('bye');
}, 3000);
3) console.log('hello again');
비동기 처리에 대한 이해가 없는 상태에서 위 코드를 보면 아마 다음과 같은 결과값이 나올 거라고 생각할 겁니다.
- ‘Hello’ 출력
- 3초 있다가 ‘Bye’ 출력
- ‘Hello Again’ 출력
그런데 실제 결과 값은 아래와 같이 나오죠.
- ‘Hello’ 출력
- ‘Hello Again’ 출력
- 3초 있다가 ‘Bye’ 출력
setTimeout() 역시 비동기 방식으로 실행되기 때문에 3초를 기다렸다가 다음 코드를 수행하는 것이 아니라 일단 setTimeout()을 실행하고 나서 바로 다음 코드인 console.log('Hello Again');
으로 넘어갔습니다. 따라서, ‘Hello’, ‘Hello Again’를 먼저 출력하고 3초가 지나면 ‘Bye’가 출력됩니다.
=> 비동기 처리시 발생하는 문제를 해결하기 위한 함수가 콜백함수
특정 로직이 끝났을 때 원하는 동작을 실행시킬 수 있다.
Q. vertx 구조에서 worker verticle은 Thread pool 안에서 동작하는데 blocking 방식으로 동작한다고 되어있다.
그럼 앞단인 표준 verticle이 ELP에서 비동기로 동작해도 뒷단인 Thread pool이 blocking되면 빠르게 처리할 수 없는거 아닌가??
'설계 > WebServer' 카테고리의 다른 글
Apache 마인드맵 (0) | 2018.10.23 |
---|---|
JAVA NIO 와 Selector (0) | 2018.10.19 |
vert.x 구조 이해하기 (0) | 2018.10.18 |
JVM 이란 (0) | 2018.10.13 |
Jmeter 테스트 오류 (0) | 2018.10.11 |