Just remember the followings when you try to resolve thread question related to run() and start()
If you have a class that implements Runnable
1. As a contract, you need to implement method run()
2. You still can have method start() in your class, if you want
3. If you have a thread like
you can execute t.start() which would execute MyRunnable#run a new thread.
4. You can execute t.run(), which will do the same of 3, except it won't have a new thread, instead it would execute in main thread.
5. Using reference of t, you can't invoke MyRunnable#start(), If you want to invoke it, you would need a reference of MyRunnable, such as
would execute MyRunnable#start() in main thread, NOT in new thread.
Thanks,
Mohammad