RxJava에는 5 가지 스케줄러 가 있습니다 :
instant () : 현재 스레드에서 즉시 작업을 실행하는 스케줄러를 만들고 반환합니다.
trampoline () : 현재 작업이 완료된 후 실행될 현재 스레드에서 작업을 대기시키는 스케줄러를 작성하고 리턴합니다.
newThread () : 작업 단위마다 새 스레드를 작성하는 스케줄러를 작성하고 리턴합니다.
calculation () : 계산 작업을위한 스케줄러를 만들고 반환합니다. 이벤트 루프, 콜백 처리 및 기타 계산 작업에 사용할 수 있습니다. 이 스케줄러에서 IO 바운드 작업을 수행하지 마십시오. 스케줄러를 사용하십시오. 대신 io () .
io () : IO 바운드 작업을위한 스케줄러를 생성하고 반환합니다. 구현은 필요에 따라 확장되는 Executor 스레드 풀에 의해 지원됩니다. 이는 차단 IO를 비동기 적으로 수행하는 데 사용할 수 있습니다. 이 스케줄러에서 계산 작업을 수행하지 마십시오. 스케줄러를 사용하십시오. calculation () 대신에.
질문 :
처음 3 개의 스케줄러는 설명이 필요 없습니다. 그러나 나는 계산 과 io 에 대해 약간 혼란 스럽다 .
- "IO 바운드 작업"이란 정확히 무엇입니까? 스트림 (
java.io
) 및 파일 (java.nio.files
) 을 처리하는 데 사용 됩니까? 데이터베이스 쿼리에 사용됩니까? 파일을 다운로드하거나 REST API에 액세스하는 데 사용됩니까? - 어떻게 계산 () 다른 newThread는 () ? 모든 계산 () 호출이 매번 새로운 (배경) 스레드 대신 단일 (배경) 스레드에 있습니까?
- IO 작업을 수행 할 때 calculation () 을 호출 하는 것이 왜 나쁜 가요?
- 계산 작업을 수행 할 때 io () 를 호출하는 것이 왜 나쁜 가요?