전체 글254 [Android] Coroutine 왜 스레드보다 가볍다고 할까? 코루틴은 왜 스레드 보다 가볍다고 할까?코루틴 하나가 새로 생성되어 실행된다는 것이 그와 동시에 새로운 스레드 또한 생성되는 것을 의미하는 것은 아닙니다. (정확히 말하자면 이것은 코루틴 생성 시 스케쥴러 설정에 따라 다릅니다.) 사실, 코루틴은 스케쥴링 가능한 코드 블록 혹은 이러한 코드 블록들의 집합이라고 볼 수 있습니다. 이해를 돕기 위해서 코루틴이 실행되는 과정을 다음과 같이 그림으로 나타내 보았습니다. 제일 왼쪽에 보면 CoroutineScope 가있습니다. 우리가 어떤 코루틴을 실행하기 위해서는 어떤 코루틴 스코프에 속해 있어야 합니다.현재 코루틴 스코프가 갖는 컨텍스트(CoroutineContext) 에서 Dispatcher 는 UI Dispatcher 라고 되어 있습니다. 이것은 현재 스코.. 2025. 1. 31. [Java] 제네릭(Generic) 이란? 제네릭 (Generics) 이란자바에서 제네릭(Generics)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 객체별로 다른 타입의 자료가 저장될 수 있도록 한다.즉, 제네릭은 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입(type)을 파라미터(parameter)로 사용할 수 있도록 하며, 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해준다. 자바에서 배열과 함께 자주 쓰이는 자료형이 리스트(List)인데, 다음과 같이 클래스 선언 문법에 꺾쇠 괄호 로 되어있는 코드 형태를 한번 쯤은 봤을 것이다.ArrayList list = new ArrayList();저 꺾쇠 괄호가 바로 제네릭이다. 괄호 안에는 타입명을 기재한다. 그러면 저.. 2025. 1. 31. [Java] 스레드 생명주기와 스케줄링 스레드 상태스레드는 JVM에 있어 생명체와 같습니다.스레드는 태어나고(New), 실행하고(Runnable), 잠자고(Sleep), 대기하고(Wait), 종료(Terminated)하는 등의 생명주기(Life Cycle)을 가집니다. NEW스레드가 생성되었지만 아직 실행할 준비가 되지 않은 상태입니다.Java에서 new Thread()에 의해 스레드 객체가 생성되면 NEW 상태가 됩니다. NEW 상태의 스레드는 스케줄링 되지 않기 때문에 실행될 수 없는 상태입니다.스케줄링이 뭔가요?JVM이 RUNNABLE(준비) 상태인 스레드 중에서 하나를 선택하여 실행시키는 과정입니다.이렇게 선택된 스레드는 CPU의 자원을 할당받아 실제로 실행됩니다. 원래 자바 스레드는 비선점으로 스케줄링을 합니다.하지만, Windo.. 2025. 1. 28. [Android] Coroutine Dispatcher에 대한 고찰 - Deep Dive 우리는 Kotlin의 흐름과 몇 가지 기본 개념의 내부 작동을 탐구했지만, 코루틴 디스패처에 대해서는 깊이 파고든 적이 없습니다. 이번 포스팅을 통해 Coroutine DisPatcher에 대해 깊게 알아보는 시간을 갖고자 합니다.이를 분석해서 이것이 코드에 어떤 영향을 미치는지 살펴보겠습니다. Dispatcher란?Dispatcher의 사전적인 의미는 사람이나 차량을 필요한 곳으로 보내는 일을 담당하는 사람입니다.Kotlin 코루틴에서의 Dispatcher는 Coroutine들을 적절하게 쓰레드 또는 쓰레드 풀에 할당하여 실행시키는 Scheduler 역할을 하는 코루틴 Cntext의 일부라고 할 수 있습니다. Dispactcher의 종류로는 Default / IO / Main / Unconfinied가.. 2025. 1. 27. [Android] 코루틴(Coroutine) 내부적으로 어떻게 동작할까? 코루틴을 사용해보면 약간 궁금한 게 있었다. 어떻게 함수가 중단되고 재개되고 가능한지 의문이 생긴다. 그래서 한번 코루틴 내부를 한번 파헤쳐 보도록 하자. 아래 포스팅한 내용은 KotlinConf 2017 - Deep Dive into Coroutines on JVM by Roman Elizarov 영상의 내용들이다. 결론적으로 말하면, 코루틴은 디컴파일되면 일반 코드일 뿐이다. Continuation Passing Style(CPS, 연속 전달 방식) 이라는 형태의 코드로 전환한다. 아래에서 자세히 알아보자. Continuation Passing Style(CPS)코루틴은 컴파일러에서 CPS 로 변환이 된다. CPS 는 일종의 연속된 콜백의 형태라고 한다. 그래서 어떻게 동작하는지 알아보자. su.. 2025. 1. 24. [Android] RecyclerView의 원리 및 내부 동작 Android 앱을 개발할 때 리스트를 보여줘야한다면 가장 많이 사용되는 View는 RecyclerView일 것입니다. 우리가 RecyclerView를 사용하면서 아래와 같이 스크롤을 했을 때 체크하지 않은 아이템에도 체크가 돼 있는 현상을 겪었던 적이 있을 것입니다. 왜 이런 현상이 발생하는지 RecyclerView 내부 동작에 대해 깊게 알아보는 시간을 가져보도록 하겠습니다. 🌀 RecyclerView 이전의 시대RecyclerView가 등장하기 전, 안드로이드에선 어떤 리스트를 나타내는 뷰를 만들 때, ListView라는 것을 제공했습니다. 하지만 이 ListView에는 고질적인 문제가 존재했습니다. 대표적인 문제점은 아이템 리스트를 표현하는 ItemView의 갯수가 수 백개 이상으로 많아.. 2025. 1. 23. 이전 1 2 3 4 5 6 ··· 43 다음