I am struggling to understand the difference between run() and start(). According to the documentation, run() method invokes the calla
run()
start()
You're exactly right. As it describes in the docs, run() is the entry point of the new thread created by start().