본문 바로가기

Kotlin8

[Kotlin] 코루틴 동기화 방법 코루틴은 동시성 작업을 다루는 데 유용한 도구이며, 동시에 여러 코루틴이 접근하는 공유 데이터에 대한 동기화를 효과적으로 처리할 수 있습니다.  1. Mutex (Mutual Exclusion) 코루틴 간에 공유된 데이터에 안전하게 접근하기 위해 Mutex를 사용할 수 있습니다. Mutex는 임계 영역(Critical Section)을 설정하여 한 번에 하나의 코루틴만 해당 영역에 접근할 수 있게 합니다. import kotlinx.coroutines.* import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock var sharedVariable = 0 val mutex = Mutex() suspend fun incremen.. 2023. 11. 22.
[Kotlin] 스레드간 동기화 방법 1. Synchronized 메서드: class MyRunnable : Runnable { private var sharedVariable = 0 // synchronized 메서드 @Synchronized private fun increment() { sharedVariable++ } override fun run() { for (i in 0 until 10000) { increment() } } } 2. Synchronized 블록: class MyRunnable : Runnable { private val lock = Any() private var sharedVariable = 0 override fun run() { for (i in 0 until 10000) { synchronized(lock.. 2023. 11. 22.
[Kotlin] 삼항 연산자가 없습니다 코틀린은 명시적인 삼항 연산자를 가지고 있지 않습니다. 대신, Kotlin에서는 `if` 표현식을 사용하여 조건에 따라 값을 반환합니다. 다음은 Kotlin에서의 조건문 사용에 대한 간단한 예제입니다: val result = if (condition) { // 조건이 참일 때의 값 value1 } else { // 조건이 거짓일 때의 값 value2 } 이것은 Java 등에서 사용되는 삼항 연산자(`? :`)의 역할을 대신합니다. Kotlin에서는 `if` 표현식이 값을 반환할 수 있으므로, `if-else` 구문을 통해 조건에 따라 값을 설정하는 것이 일반적입니다. 2023. 11. 15.
엘비스 연산자('?:') 엘비스 연산자(`?:`)는 널 병합(Null Coalescing) 연산자로도 불립니다. 이 연산자는 간단한 표현을 통해 널 가능성이 있는 변수나 표현식을 다룰 때 유용합니다. 다음은 엘비스 연산자의 사용 방법과 설명입니다: val result = a ?: 1 - `a`가 `null`이 아니면, `result`에는 `a`의 값이 할당됩니다. - `a`가 `null`이면, `result`에는 우측의 값인 `1`이 할당됩니다. 이것은 아래의 코드와 동일한 의미를 가집니다: val result = if (a != null) a else 1 하지만 엘비스 연산자를 사용하면 코드가 더 간결해지고 가독성이 향상됩니다. 이는 특히 널 가능성이 있는 변수를 다룰 때 반복적으로 사용되는 패턴 중 하나입니다. 2023. 11. 14.