Give each thread its own local label while the main thread combines stable results.

Thread Local Context

ThreadLocalContext.kt
val currentLabel = ThreadLocal.withInitial { "unset" }

fun collectLabel(label: String, slot: Int, output: Array<String>) {
    currentLabel.set(label)
    val local = currentLabel.get()
    output[slot] = "$local:${label.length}"
    currentLabel.remove()
}

fun main() {
    val suffix = 
    val output = Array(2) { "" }

    val first = Thread { collectLabel("read-$suffix", 0, output) }
    val second = Thread { collectLabel("write-$suffix", 1, output) }

    first.start()
    second.start()
    first.join()
    second.join()

    println("suffix=$suffix")
    println(output.joinToString("|"))
}
val currentLabel = ThreadLocal.withInitial { "unset" }

fun collectLabel(label: String, slot: Int, output: Array<String>) {
    currentLabel.set(label)
    val local = currentLabel.get()
    output[slot] = "$local:${label.length}"
    currentLabel.remove()
}

fun main() {
    val suffix = 
    val output = Array(2) { "" }

    val first = Thread { collectLabel("read-$suffix", 0, output) }
    val second = Thread { collectLabel("write-$suffix", 1, output) }

    first.start()
    second.start()
    first.join()
    second.join()

    println("suffix=$suffix")
    println(output.joinToString("|"))
}
val currentLabel = ThreadLocal.withInitial { "unset" }

fun collectLabel(label: String, slot: Int, output: Array<String>) {
    currentLabel.set(label)
    val local = currentLabel.get()
    output[slot] = "$local:${label.length}"
    currentLabel.remove()
}

fun main() {
    val suffix = 
    val output = Array(2) { "" }

    val first = Thread { collectLabel("read-$suffix", 0, output) }
    val second = Thread { collectLabel("write-$suffix", 1, output) }

    first.start()
    second.start()
    first.join()
    second.join()

    println("suffix=$suffix")
    println(output.joinToString("|"))
}
thread local `ThreadLocal` stores one value per thread, which keeps per-thread context separate even when the same function runs twice.