"Thread can be created by extending the Thread or by Implementing the Runnable interface.when these r used. Which most advantage than other."
It depends on what you want to do. In most cases you will want to implement runnable. As a general rule you extend Thread when you need to add additional behavior to the Thread class: class MyThread extends Thread. Note two things about this approach. First, MyThread is-a Thread, and second, MyThread cannot extend any other class besides Thread. MyThread will then likely be used to start a Runnable object.
As to which is the most advantageous, if you need to add additional capabilities to Thread to create your own thread class, then you will need to extend Thread. If you want to, as will be the overwhelming majority of cases, simply create other threads of execution, then implement Runnable.
One more difference I read some where If ur extending the thread the class is not able to extend any other class .So u r limiting that particular class since java does not suppo[rt multiple inheritance If ur implementing the Runnable interface the class still can extend another class
The biggest knock against extending Thread is that you are only allowed to extend one class in Java and, if you extend Thread, you're out of luck as far as extending anything else goes. I do, however, use this approach from time to time.
A benefit (or hindrance) with implementing Runnable is the ability to share data. It's quite possible to create a single instance of a Runnable object and spawn multiple threads using that single object. If that Runnable object contains data members, that data would be shared by all of the threads using it. Perhaps that's what you want. Perhaps not. That's up to you.