import Ġkotlinx . coroutines . experimental .* Ċ import Ġorg . junit . Test Ċ import Ġjava . lang . Thread . sleep Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠC ancell ing Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠC ancellation Ġis Ġc ooper ative . ĊĠĠĠĠ Ġ* Ġ ĠThe Ġcoroutine Ġdoes Ġnot Ġget Ġcancelled , Ġbecause Ġit Ġdoesn 't Ġc ooper ate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcancel _ coroutine () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlaunch Ġ= Ġlaunch ( coroutine Context Ġ+ ĠCommon Pool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( 1 0 0 0 L ) Ġ// ĠBLOCK ING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Did Ġnot Ġget Ġcancelled ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" C ancell ing ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Done !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġcoroutine Ġcancel s ĊĠĠĠĠ Ġ* Ġ ĠChecks ĠisActive Ġfor Ġcancellation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcancel _ coroutine _ co operate () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlaunch Ġ= Ġlaunch ( coroutine Context Ġ+ ĠCommon Pool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsleep ( 1 0 0 0 L ) Ġ// ĠBLOCK ING ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" C ancell ing ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Done !") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġspecify Ġa Ġtimeout Ġfor Ġcor outines ĊĠĠĠĠ Ġ* Ġ ĠWill Ġthrow ĠTimeout Cancellation Exception ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcancel _ coroutine _ with _ timeout () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch ( coroutine Context Ġ+ ĠCommon Pool ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Timeout ( 3 , ĠTimeUnit . SECONDS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Job Ġwas Ġcancelled Ġbecause Ġof Ġtimeout : Ġ\ n $ t ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln (" Done !") ĊĠĠĠ Ġ} Ċ Ċ } Ċ