ThreadLocal
Basic Example
package sandbox.kotlin.threading
class ThreadSpecificData(var value: Int)
val threadLocalData = ThreadLocal.withInitial { ThreadSpecificData(0) }
fun sleep(milils: Long) {
Thread.sleep(milils)
}
fun main() {
Thread {
val data = threadLocalData.get()
data.value = 100
myPrint("${data.value}")
sleep(500)
myPrint("${data.value}")
}.start()
Thread {
val data = threadLocalData.get()
data.value = 200
myPrint("${data.value}")
sleep(500)
myPrint("${data.value}")
}.start()
}
private fun myPrint(msg: String) {
val threadInfo = Thread.currentThread().name
println("$threadInfo: $msg")
}