[Android] 코루틴 Blocking와 Non-Blocking의 차이
2024. 9. 25. 03:52
[# 2]…My DevelopStory
오늘 면접을 보았는데 문득 blocking과 non-blocking의 차이점을 설명해보라는 질문을 받았다.대충 뭔지는 알고 있었지만 개똥같은 대답을 했기에 기록해본다. Blocking코루틴의 블로킹은 현재 실행 중인 스레드를 중단시키고 작업이 완료될 때까지 대기하는 방식즉, 블로킹이 호출이 발생하면 해당 스레드가 멈춰서 다른 작업을 수행하지 않고 작업이 완료될 때 까지 기다린다.다른 작업을 수행하지 않지만 여전히 시스템 리소스를 소비하여 스레드가 낭비될 수 있으며, 네트워크 요청을 UI 스레드에서 블로킹 방식으로 처리하면, 네트워크 응답을 받을 때 까지 앱이 멈춘 것 처럼 보일 수 있다. Non-Blocking작업을 대기하는 동안 스레드를 멈추지 않고, 다른 작업을 계속 수행할 수 있도록 하는 방식이다...
[Android] Flow에 대하여, Flow란 무엇인가
2024. 5. 8. 02:59
[# 2]…My DevelopStory
안드로이드의 대표적인 비동기 처리라고 하면 코루틴을 떠올릴텐데, 이러한 코루틴을 더 효율적으로 프로그래밍 하기 위해 나온 도구가 Flow 입니다.데이터 스트림을 효율적으로 처리하고 관리하기 위해 등장을 하였죠 Flow의 주요 특징- 비동기 데이터 처리 : 코루틴과 함께 사용하기에 물론 비동기로 동작 합니다.- 데이터 스트림 관리 : Flow는 데이터 스트림을 생성하고, 변환, 결합하는 등 다양한 작업을 수행할 수 있습니다. 이를 통해 복잡한 비동기 작업을 명확하고 간결하게 코드를 작성할 수 있습니다.- 백프레셔 처리 : 백프레셔는 데이터 생산 속도가 데이터 소비 속도보다 빠른 경우 발생하는 문제입니다. Flow는 백프레셔를 처리하여 데이터 손실 없이 데이터 스트림을 안전하게 처리할 수 있도록 도와줍니다...