2024. 6. 12. 12:09ㆍ[Android] Kotlin 기본 문법
# 쓰레드의 개념
- 프로그램은 하나의 메인 쓰레드(실행 흐름)가 존재함
- 하나의 메인 쓰레드는 fun main() (메인 함수)를 의미
- 실습 프로그램은 메인 쓰레드 위에서 로직을 실행해 동시 처리가 불가능했음
- 별도의 자식 쓰레드를 생성하여 동시에 로직 실행 가능
- 코틀린은 thread 키워드로 쓰레드 생성 가능
# 쓰레드의 구조
- 프로세스: 프로그램이 메모리에 올라가서 실행되는 것 = 프로세스 1개
- 쓰레드는 프로세스 안에서 더 작은 작업의 단위를 의미
- 쓰레드는 생성되어서 수행할 때 각 독립된 메모리 영역인 STACK을 가짐
- 즉, 쓰레드를 한 개 생성하면 스택메모리의 일정 영역을 차지
# 예시 코드
- 1부터 10까지, 50부터 60까지 출력하는 코드를 2개의 쓰레드로 경쟁
- 1초마다 CPU 자원 경쟁을 시키기 위해 딜레이를 추가(runBlocking())
- 쓰레드 1과 쓰레드 2의 순서는 보장되지 않고 경쟁함
- 총 3개의 쓰레드로 구성(쓰레드1, 쓰레드2, 메인 쓰레드)
- 쓰레드 1,2가 동시에 처리됨 => 하나의 CPU 자원을 두고 경쟁
# 환경 설정하기(코루틴 사용)
- 외부 종속성 추가: https://github.com/Kotlin/kotlinx.coroutines#android
- Gradle의 아래 코드 복사
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0-RC")
- Gradle Scripts => build.gradle(Module :app)의 dependencies에 코드를 붙여넣기
- sync now 해서 적용
# 예시 코드 실행: 쓰레드 1과 2가 실행할 때마다 순서 엎치락뒤치락함
- CPU 자원을 할당하기 위해 경쟁할 때, 조금 더 빨리 접근한 쓰레드가 먼저 CPU 자원을 할당받음
fun main() {
thread(start = true) {
for(i in 1..10) {
println("Thread1: 현재 숫자는 ${i}")
runBlocking {
launch {
delay(1000)
}
}
}
}
thread(start = true) {
for(i in 50..60) {
println("Thread2: 현재 숫자는 ${i}")
runBlocking {
launch {
delay(1000)
}
}
}
}
}
'[Android] Kotlin 기본 문법' 카테고리의 다른 글
코틀린 기본 문법 - 쓰레드와 코루틴 (1) | 2024.06.12 |
---|---|
코틀린 기본 문법 - 코루틴 (1) | 2024.06.12 |
코틀린 기본 문법 - 비동기 프로그래밍 (0) | 2024.06.12 |
코틀린 기본 문법 - 확장 함수 (0) | 2024.06.12 |
Kotlin 기본 문법 - 유용한 기능 (0) | 2024.06.11 |