Difference between invoking thread.start() and thread.run()

Raksha Shetty
Jan 24, 2021

Consider following thread example written in kotlin

fun main() {

val thread = Thread {
for
(i in 0..10)
println("Hi Am Thread0 ${Thread.currentThread()}")
}

println("Start ")
thread.start()
println("Finish ${Thread.currentThread()}")
}

Above output looks like below,

Start
Finish Thread[main,5,main]
Hi Am Thread0 Thread[Thread-0,5,main]
Hi Am Thread0 Thread[Thread-0,5,main]
Hi Am Thread0 Thread[Thread-0,5,main]
Hi Am Thread0 Thread[Thread-0,5,main]
Hi Am Thread0 Thread[Thread-0,5,main]
Hi Am Thread0 Thread[Thread-0,5,main]

if we change thread.start() to thread.run(), then output looks like below,

Start
Hi Am Thread0 Thread[main,5,main]
Hi Am Thread0 Thread[main,5,main]
Hi Am Thread0 Thread[main,5,main]
Hi Am Thread0 Thread[main,5,main]
Hi Am Thread0 Thread[main,5,main]
Hi Am Thread0 Thread[main,5,main]
Finish Thread[main,5,main]

Now, difference is very clear by observing thread name???…

--

--

Raksha Shetty
0 Followers

“Before software can be reusable it first has to be usable.” — Ralph Johnson