[kotlin] 코틀린에서의 스레드 간 데이터 공유 방법

코틀린은 자바와 마찬가지로 멀티스레드 프로그래밍을 지원합니다. 스레드 간에 데이터를 공유하려면 적절한 방법을 사용해야 합니다. 이 글에서는 코틀린에서 스레드 간 데이터 공유를 위한 몇 가지 방법을 알아보겠습니다.

1. Volatile 키워드 사용

Volatile 키워드는 변수의 값을 항상 메인 메모리에서 읽고 쓰도록 보장하는 역할을 합니다. 스레드 간의 데이터 공유에 사용될 변수를 Volatile로 선언하면 스레드들이 항상 최신 값을 읽고 쓸 수 있습니다.

@Volatile
var sharedData: String = ""

2. Synchronized 키워드 사용

synchronized 키워드는 멀티스레드 환경에서 공유 객체의 동기화를 제공합니다. 특정 코드 블록을 synchronized 키워드로 감싸면 해당 블록을 실행하는 스레드를 제외한 다른 스레드들이 접근하지 못하도록 합니다.

var sharedData: String = ""

synchronized(this) {
    // 공유 데이터 접근 및 수정
    sharedData = "Updated data"
}

3. Atomic 클래스 사용

Atomic 클래스는 원자적으로 동작하는 연산을 지원하여 스레드 간 데이터 공유를 안전하게 처리할 수 있게 해줍니다. 예를 들어 AtomicInteger 클래스를 사용하면 원자적으로 int 값을 증가, 감소시킬 수 있습니다.

import java.util.concurrent.atomic.AtomicInteger

val counter = AtomicInteger(0)
counter.incrementAndGet() // 값을 1 증가시킴
counter.getAndDecrement() // 값을 1 감소시키고 이전 값을 반환

결론

코틀린에서 스레드 간 데이터 공유를 안전하게 처리하기 위해서는 Volatile 키워드, synchronized 키워드, 또는 Atomic 클래스를 사용하는 방법을 활용할 수 있습니다. 어떤 방법을 선택할지는 프로그램의 요구사항과 성능 등을 고려하여 결정해야 합니다.


참고 문서: