작성
·
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
안녕하세요? 낮엔 업무중이고, 밤엔 육아를 해야해서 답변이 조금 늦었습니다. ^^;
질문 주신 내용 중에
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는 종료되지 않습니다.
답변이 되셨길 바랍니다.
다른 궁금한 점이 있으시면 언제든지 질문주세요.
감사합니다.