Concurrency Coordination Reports
Countdown Latch Coordination Report
Record arrivals counted down against a latch and report whether the barrier released.
Countdown Latch Coordination Report
CountdownLatchCoordinationReport.kt
import java.util.concurrent.atomic.AtomicInteger
fun main() {
val arrivals =
val needed = 3
val latch = AtomicInteger(needed)
var counted = 0
for (i in 0 until arrivals) {
latch.decrementAndGet()
counted++
}
val remaining = latch.get()
val released = remaining == 0
val status = if (counted == 0) {
"waiting"
} else if (released) {
"released"
} else {
"partial"
}
println("arrivals=$arrivals counted=$counted remaining=$remaining $status")
}
import java.util.concurrent.atomic.AtomicInteger
fun main() {
val arrivals =
val needed = 3
val latch = AtomicInteger(needed)
var counted = 0
for (i in 0 until arrivals) {
latch.decrementAndGet()
counted++
}
val remaining = latch.get()
val released = remaining == 0
val status = if (counted == 0) {
"waiting"
} else if (released) {
"released"
} else {
"partial"
}
println("arrivals=$arrivals counted=$counted remaining=$remaining $status")
}
import java.util.concurrent.atomic.AtomicInteger
fun main() {
val arrivals =
val needed = 3
val latch = AtomicInteger(needed)
var counted = 0
for (i in 0 until arrivals) {
latch.decrementAndGet()
counted++
}
val remaining = latch.get()
val released = remaining == 0
val status = if (counted == 0) {
"waiting"
} else if (released) {
"released"
} else {
"partial"
}
println("arrivals=$arrivals counted=$counted remaining=$remaining $status")
}
countdown latch
A coordination report can record progress toward a barrier. An `java.util.concurrent.atomic.AtomicInteger` started at a fixed count models a countdown latch, and each `decrementAndGet` records one arrival while `get` reports how many arrivals are still missing. With no arrivals the latch is still waiting, with some arrivals it is partial, and once the count reaches zero the barrier is released. The status line summarizes whether the latch stayed waiting, partial, or released after the recorded arrivals.