package Ġcom . kotlin . in action . reference . coroutines ._ 0 2 _ c ancellation _ and _ timeout s Ċ Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . run Blocking Ċ Ċ /** Ċ Ġ* Ġ åıĸæ¶Ī åįı ç¨ĭ æī§è¡Į ä¾ĭåŃĲ Ċ Ġ* Ġ@ author Ġw ang zh ich ao Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 1 0 / 3 1 Ċ Ġ*/ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġprintln (" 1 , Ġthread Name =${ Thread . currentThread (). name }") Ġ// Ġmain ĊĠĠĠ Ġval Ġjob Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" 2 , Ġthread Name =${ Thread . currentThread (). name }") Ġ// Ġmain ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" 3 , Ġthread Name =${ Thread . currentThread (). name }") Ġ// Ġmain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" job : ĠI 'm Ġsleep ing Ġ$ it Ġ... ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" 4 , Ġthread Name =${ Thread . currentThread (). name }") Ġ// Ġmain ĊĠĠĠ Ġdelay ( 1 3 0 0 L ) ĊĠĠĠ Ġprintln (" 5 , Ġthread Name =${ Thread . currentThread (). name }") Ġ// Ġmain ĊĠĠĠ Ġprintln (" main : ĠI 'm Ġt ired Ġof Ġwaiting !") ĊĠĠĠ Ġjob . cancel () Ġ// Ġcancel Ġ è°ĥçĶ¨ åĲİ ï¼Į å°± ä¸įä¼ļ åĨį æľī Ġ 3 Ġ è¾ĵåĩº äºĨ ãĢĤ ĊĠĠĠ Ġjob . join () ĊĠĠĠ Ġprintln (" main : ĠNow ĠI Ġcan Ġquit .") Ċ Ċ }