Priya
If you call a threads run method directly (instead of calling start) the run method runs in the current thread not a new thread. so you're calling the run method on the first thread and it is looping endlessly, and will never return to call the next run method.
This code shows that that is whats happening:
This will print the numbers 0 to 9999 in order three times in a row. Then change it like Dan showed in his post to call start instead of run,
you should see some evidence of the threads being preempted by the others. It may print 0 to 8000 then start at 0 again for the next thread, then later you'll see it start at 8001 to finish the first one. If you dont see it you can always increase the loop counter.
hope that helps
Dave