``` val job = launch { println("Do some...
# coroutines
g
Copy code
val job = launch {
        println("Do something")
    }
    
    job.join()

    assertTrue(job.isCompleted)
    assertTrue(!job.isCancelled)
    println("isCompleted ${job.isCompleted}, isCancelled ${job.isCancelled}") 
    //output: isCompleted true, isCancelled false
s
Starting a Thread..
But can I use
job
as a life cycle then ?
g
what do you mean?
you can call
job.cancel()
and cancel coroutine
Copy code
val job = launch {
        println("Do something")
        delay(100)
        println ("Do something else")
    }

    delay(50)
    job.cancel()

    println("isCompleted ${job.isCompleted}, isCancelled ${job.isCancelled}")
in this case we cancel coroutine:
Copy code
//output: isCompleted true, isCancelled true