mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 00:21:47 +00:00
33 lines
732 B
Plaintext
33 lines
732 B
Plaintext
import java.util.concurrent.*
|
|
import java.util.concurrent.atomic.*
|
|
|
|
fun thread(block: ()->Unit ) {
|
|
val thread = object: Thread() {
|
|
override fun run() {
|
|
block()
|
|
}
|
|
}
|
|
thread.start()
|
|
}
|
|
|
|
fun box() : String {
|
|
val mtref = AtomicInteger()
|
|
val cdl = CountDownLatch(11)
|
|
for(i in 0..10) {
|
|
thread {
|
|
var current = 0
|
|
do {
|
|
current = synchronized(mtref) {
|
|
val v = mtref.get() + 1
|
|
if(v < 100)
|
|
mtref.set(v+1)
|
|
v
|
|
}
|
|
}
|
|
while(current < 100)
|
|
cdl.countDown()
|
|
}
|
|
}
|
|
cdl.await()
|
|
return if(mtref.get() == 100) "OK" else mtref.get().toString()
|
|
} |