분류 전체보기(126)
-
Continuation
코틀린(Kotlin)에서 코루틴(Coroutines)은 비동기 프로그래밍을 위한 강력한 도구입니다. 코루틴은 비동기 작업을 쉽게 작성하고 관리할 수 있게 해줍니다. 코루틴의 핵심 개념 중 하나는 Continuation입니다. Continuation은 코루틴의 일시 중단된 상태를 캡처하고, 나중에 그 지점부터 실행을 재개할 수 있게 해줍니다.Continuation의 개념Continuation은 코루틴이 일시 중단된 이후에 실행을 재개할 수 있는 지점을 나타냅니다. 코루틴이 일시 중단될 때, 현재 상태와 필요한 컨텍스트가 Continuation 객체에 저장됩니다. 이후에 이 객체를 통해 코루틴을 재개할 수 있습니다.Continuation 인터페이스Continuation 인터페이스는 다음과 같이 정의됩니다:i..
2024.11.27 -
Coroutine - Suspend
suspend 함수는 Kotlin 코루틴에서 비동기 작업을 수행하기 위해 사용되는 함수야. suspend 키워드는 함수가 일시 중단(suspend)될 수 있으며, 나중에 다시 재개(resume)될 수 있음을 나타내. suspend 함수는 코루틴 내에서만 호출될 수 있어. 비동기 작업을 더 쉽게 작성하고 관리할 수 있도록 도와주지.왜 suspend 함수를 사용해야 할까?suspend 함수를 사용하면 다음과 같은 장점이 있어:비동기 작업을 동기 코드처럼 작성할 수 있어:suspend 함수를 사용하면 비동기 작업을 마치 동기 작업처럼 순차적으로 작성할 수 있어. 이는 코드의 가독성과 유지보수성을 높여줘.코루틴 내에서 일시 중단과 재개를 쉽게 처리할 수 있어:suspend 함수는 코루틴이 일시 중단될 수 있는 ..
2024.11.20 -
Coroutine VS Thread
코루틴을 사용하는 이유와 스레드와의 차이점을 설명할게.1. 경량성코루틴: 코루틴은 매우 경량이야. 수천 개의 코루틴을 생성해도 메모리와 CPU 자원을 비교적 적게 사용해. 코루틴이 스택을 사용하지 않고, 필요할 때만 실행되기 때문이지.스레드: 스레드는 운영체제 수준에서 관리되며, 생성과 전환 비용이 높아. 많은 수의 스레드를 생성하면 메모리와 CPU 자원을 많이 소모하게 돼.2. 쉬운 비동기 코드 작성코루틴: 코루틴은 비동기 코드를 동기 코드처럼 작성할 수 있게 해줘. suspend 함수와 같은 기능을 통해 비동기 작업을 쉽게 표현할 수 있어.스레드: 스레드를 사용한 비동기 프로그래밍은 코드가 복잡해지고, 동기화 문제를 해결하기 위해 추가적인 코드가 필요해.3. 구조화된 동시성코루틴: 코루틴은 구조화된 ..
2024.11.20 -
Coroutine - Global Scope / runBlocking
코루틴은 비동기 프로그래밍을 쉽게 구현하기 위한 경량 스레드이다Coroutine Scope - 코루틴의 생명주기를 관리하는 역할Global Scope / runBlockingGlobal ScopeGlobalScope는 코루틴을 애플리케이션 전체의 수명 동안 실행하도록 하는 범위입니다. GlobalScope에서 시작된 코루틴은 명시적으로 취소되지 않는 한 계속 실행됩니다. 이는 주로 백그라운드 작업이나 애플리케이션의 수명 동안 지속되어야 하는 작업에 사용됩니다.import kotlinx.coroutines.*fun main() { GlobalScope.launch { // 백그라운드에서 실행될 코루틴 delay(1000L) println("GlobalScope:..
2024.11.20 -
String과 StringBuffer의 차이
StringBuffer와 String는 자바에서 문자열을 처리하기 위한 클래스들이지만, 그 목적과 사용 방식에서 차이가 있습니다. 이 두 클래스의 주요 차이점을 표로 정리하면 다음과 같습니다:구분StringStringBuffer불변성 (Immutability)불변 (Immutable): 한 번 생성된 String 객체는 수정할 수 없음. 새로운 문자열이 만들어지면 기존 객체는 변하지 않고 새로운 객체가 생성됨.가변 (Mutable): StringBuffer 객체는 한 번 생성된 후에도 수정 가능함. 문자열을 추가하거나 수정해도 새로운 객체를 생성하지 않음.동기화 (Thread Safety)동기화되지 않음: String은 동기화되지 않아 멀티스레드 환경에서 안전하지 않음.동기화됨: StringBuffer는..
2024.09.27 -
코틀린의 List와 Array
코틀린의 List는 기본적으로 immutable이다 immtuable이란 불변성 이라는 뜻으로 객체는 생성된 이후 상태 변경이 안되고, 새로운 객체를 생성해야한다 장점 안정성과 예측 가능성: 불변 객체는 상태가 변하지 않기 때문에 코드를 예측하기 쉽고 안정적입니다. 이로 인해 예기치 않은 부작용을 줄일 수 있습니다. 스레드 안전성: 불변 객체는 여러 스레드에서 동시에 접근되어도 안전합니다. 동기화 문제를 해결할 필요가 없기 때문에 다중 스레드 환경에서 사용하기 용이합니다. 코드 단순화: 불변 객체는 값이 변하지 않기 때문에 복잡한 상태 관리를 간소화할 수 있습니다. 코드를 이해하고 유지보수하기가 더 쉬워집니다. 함수형 프로그래밍 지원: 불변성은 함수형 프로그래밍의 핵심 원칙 중 하나이며, 함수형 스타일의..
2024.01.26