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

갓다귀갓장국님의 프로필 이미지

작성한 질문수

Kevin의 알기 쉬운 RxJava 1부

리액티브 스트림즈(Reactive Streams)란?

첫번째 강의 부터 이번강의까지 수강하면서 궁금한점 질문드립니다.

작성

·

256

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요. 강사님 Spring Webflux가 앞으로 대세로 많이 사용될 것 같은 생각이 들어서 RxJava를 수강하면서 강의를 잘 듣고 있습니다.
 
현재까지 강의 들으면서 궁금한점이 있어서 질문드리는데요, 첫번째 강의에서 사용한 코드는 main() 메서드 마지막에 Thread.sleep()이 없으면 별도의 쓰레드에 의해 코드가 실행되면서 결과값을 볼 수가 없었는데
 
지금은 main()메서드 마지막에 Thread.sleep()을 안주어도 되는 것 별도의 쓰레드풀을 코드에서 사용하지 않고 메인쓰레드에서 결과값이 나오는 걸 확인할 수 있었습니다.
 
그렇다고 하면 RxJava 프로그래밍도 subscribeOn이나 observeOn에 쓰레드풀 지정여부에 따라서 동기, 비동기로 실행되는 것인지요?

답변 1

1

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

안녕하세요?

질문에 답변을 제대로 드리고 싶은데 질문하신 부분 중에 제가 이해를 잘 못하고 있는 부분이 있어서 다시 질문도 드려보고 우선 질문자님이 질문하신 내용 중에 답을 할 수 있는 부분 역시 답을 해보도록 하겠습니다.

 

"첫번째 강의에서 사용한 코드는 main() 메서드 마지막에 Thread.sleep()이 없으면 별도의 쓰레드에 의해 코드가 실행되면서 결과값을 볼 수가 없었는데..."

---> 여기서 첫번째 강의는 1부 강의를 말씀하시는건지 궁금합니다.

 

"지금은 main()메서드 마지막에 Thread.sleep()을 안주어도 되는 것 별도의 쓰레드풀을 코드에서 사용하지 않고 메인쓰레드에서 결과값이 나오는 걸 확인할 수 있었습니다."

---> 지금은 이라는것이 1부, 2부 중 어느 강의이고 어느 섹션, 어떤 수업의 예제 코드인지를 알려주시면 답변 드리기 더 용이할 것 같습니다.

---> 말씀하시는 것을 보면 Thread.sleep()으로 지연 시간을 주지않아도 결과 값이 나온다는 것은 main 쓰레드 하나만 실행되는 것으로 판단이 되긴합니다.

 

"그렇다고 하면 RxJava 프로그래밍도 subscribeOn이나 observeOn에 쓰레드풀 지정여부에 따라서 동기, 비동기로 실행되는 것인지요?"

---> Spring WebFlux에서 사용되는 Reactor의 경우에도 publishOn과 subscribeOn Operator를 통해서 Scheduler를 지정하여 쓰레드를 추가적으로 실행을 할 수 있는데, 말씀하신것처럼 RxJava 역시 observeOn과 subscribeOn을 통해서 main 쓰레드 이외의 별도의 쓰레드를 추가해줄 수 있습니다. 리액티브 프로그래밍은 비동기 프로그래밍이 주목적인데, 강의 설명상 main 쓰레드 하나만 사용한 부분도 많다는 것을 참고해주시면 감사드릴게요.

---> Scheduler 관련해서는 2부 강의의 [섹션 1. 스케쥴러]에서 상세히 설명을 하고 있습니다.

 

질문자님의 질문 자체를 제가 이해를 잘 못해서 죄송하구요.

조금 더 자세히 설명을 해주시면 그에 맞게 추가 답변을 드리도록 하겠습니다.

감사합니다.

제가 질문을 애매하게 했네요 하지만 원하는 답을 얻었습니다 감사합니다

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

네, 다른 궁금한 점 있으시면 언제든지 편하게 질문주세요.

감사합니다.