blob: 7e7f1a0ea312fc7b2fb1d2e739f02b4f0fd49682 [file] [log] [blame]
package examples
import kotlinx.coroutines.experimental.Job
import kotlinx.coroutines.experimental.delay
import kotlinx.coroutines.experimental.future.future
import java.util.concurrent.CancellationException
fun main(args: Array<String>) {
val job = Job()
log("Starting futures f && g")
val f = future(job) {
log("Started f")
delay(500)
log("f should not execute this line")
}
val g = future(job) {
log("Started g")
try {
delay(500)
} finally {
log("g is executing finally!")
}
log("g should not execute this line")
}
log("Started futures f && g... will not wait -- cancel them!!!")
job.cancel(CancellationException("I don't want it"))
check(f.isCancelled)
check(g.isCancelled)
log("f result = ${Try<Unit> { f.get() }}")
log("g result = ${Try<Unit> { g.get() }}")
Thread.sleep(1000L)
log("Nothing executed!")
}