import Ġkotlinx . coroutines .* čĊč Ċ fun Ġmain () Ġ= Ġrun Blocking Ġ{ čĊčĊĠĠĠ Ġprintln (" Main Ġprogram Ġstarts : Ġ${ Thread . currentThread (). name }") čĊčĊĠĠĠ Ġval Ġjob : ĠJob Ġ= Ġlaunch ( Dispatch ers . Default ) Ġ{ čĊĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 0 0 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("$ i .") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠC ancellation Exception ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("\ n Exception Ġcaught Ġsafely : Ġ${ ex . message }") čĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Non C ancellable ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("\ n Close Ġresources Ġin Ġfinally ") čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġdelay ( 1 0 ) čĊĠĠĠ Ġjob . cancel ( Cancellation Exception (" My Ġown Ġcrash Ġmessage ")) čĊĠĠĠ Ġjob . join () čĊčĊĠĠĠ Ġprintln ("\ n Main Ġprogram Ġends : Ġ${ Thread . currentThread (). name }") č Ċ }