인프런 커뮤니티 질문&답변

qpal1zm23님의 프로필 이미지
qpal1zm23

작성한 질문수

Kevin의 알기 쉬운 RxJava 1부

리액티브(Reactive) 프로그래밍이란

1강에 예시로 보여주신 ToDoSample 코드에 관해 질문 드립니다!

작성

·

247

0

안녕하세요! 이제 막 RxJava를 배우기 시작하였습니다 ㅎㅎ

1강 14:20초 즈음에 예시로 보여주신 ToDoSample.class코드에 대해 질문 드립니다.

java app은 main thread가 종료되어도 다른 non-deamon thread가 실행 중이면 app이 종료되지 않는 것으로 알고 있는데,

subscribeOn( Schedulers.io() ) 메소드 실행 시, 다른 thread 가 시작하기도 전에 main thread가 종료되어, 실행 중인 thread가 없어져 app이 종료되었다고 파악해야 할까요??

subscribeOn( Schedulers.io() ) 메소드를 실행하였음에도 왜 다른 스레드가 실행이 바로 되지 않는 걸까요??

 

 

답변 1

0

Kevin님의 프로필 이미지
Kevin
지식공유자

안녕하세요? 낮엔 업무중이고, 밤엔 육아를 해야해서 답변이 조금 늦었습니다. ^^;

질문 주신 내용 중에

java app은 main thread가 종료되어도 다른 non-deamon thread가 실행 중이면 app이 종료되지 않는 것으로 알고 있는데,

에 대한 답변을 드리자면 RxJava의 Scheduler로 생성하는 쓰레드는 디폴트가 daemon thread입니다. 그래서 main thread가 종료되면서 함께 종료가 된다고 보시면 되구요.

만약, subscribeOn(Schedulers.io()) 대신에 subscribeOn(Schedulers.from(Executors.newFixedThreadPool(5)))와 같이 ExecutorServerice를 이용할 경우, 생성되는 thread는 non-daemon thread여서 main thread가 종료되어도 해당 thread는 종료되지 않습니다.

답변이 되셨길 바랍니다.

다른 궁금한 점이 있으시면 언제든지 질문주세요.

감사합니다.

qpal1zm23님의 프로필 이미지
qpal1zm23

작성한 질문수

질문하기