In Kotlin, coroutine cancellation is cooperative. How should I understand it?
Link to Kotlin documentation.
If you have a Java background, you may be familiar with the thread interruption mechanism. Any thread can call thread.interrupt()
and the receiving thread will get a signal in the form of a Boolean isInterrupted
flag becoming true. The receiving thread may check the flag at any time with currentThread.isInterrupted()
— or it may ignore it completely. That's why this mechanism is said to be cooperative.
Kotlin's coroutine cancellation mechanism is an exact replica of this: you have a coroutineContext.isActive
flag that you (or a function you call) may check.
In both cases some well-known functions, for example Thread.sleep()
in Java and delay()
in Kotlin, check this flag and throw an InterruptedException
and CancellationException
, respectively. These methods/functions are said to be "interruptible" / "cancellable".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With