Hi Sajida,
Let me answer it this way,
Your question "Why are the methods static"
Let us assume that JavaSoft guys didn't make the method static.
And that you are writing a program. Your program tells the user every one min what the time is.
So, your program will have to sleep for atleast 1 min.
If sleep was not static, your program would have to unnessarily extend Thread just to have that one functionality.
Also, in programs which are CPU intensive, it is a good idea to call yield. But does that mean that all CPU intensive programs have to extend Thread just because of that one fuctionality "Thread.yield()".
Luckily for us, JavaSoft people understood this and made those two methods static. Now whenever, any method calls "Thread.sleep()" or "Thread.yield()", that method rsply goes to sleep or yields.