If two methods of a class (whether both declared in the same class, or both inherited by a class, or one declared and one inherited) have the same name but different signatures, then the method name is said to be overloaded. This fact causes no difficulty and never of itself results in a compile-time error. There is no required relationship between the return types or between the throws clauses of two methods with the same name but different signatures.
call sleep() (inside run() for example) equals Thread.sleep() equals this.sleep(); i guess, JVM will take the context of instance of 'this' as arguments which is specific to 'this' instance in manipulating 'this' thread only! a guess ONLYdoing this way can avoid doing GENERAL things which might effect other thread as a static method -native method actually, we will no way in knowing what is going on inside indeed, don't u think?
any comments, guys?
Rick