[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
클래스를 사용하는 방법을 활용할 수 있습니다. 어떤 방법을 선택할지는 프로그램의 요구사항과 성능 등을 고려하여 결정해야 합니다.
참고 문서: