sleep()
========
-> If a thread doesn't want to perform any operation for a particular amount of time that is just
pausing is required then we should go for sleep() method.
-> sleep(n) says "I'm done with my timeslice, and please don't give me another one for at least n milliseconds."
The OS doesn't even try to schedule the sleeping thread until requested time has passed.
-> It is static and final method.
-> It can be overloaded and throws InterruptedException also.
join()
========
-> If a thread wants to wait until completing other threads then we should go for join() method.
-> It is final method but not static method and native method.
-> It can be overloaded and throws InterruptedException.
yield()
=========
-> It causes to pause current executing thread to give the chance for remaining waiting threads of same priority.
-> yield() says “I’m done with my timeslice, but I still have work to do.” The OS is free to immediately give the
thread another timeslice, or to give some other thread or process the CPU the yielding thread just gave up.
-> It is static method and native method but not final method.
-> It doesn't throw InterruptedException and it can't be overloaded.
wait()
========
-> wait() method releases the lock.
-> wait() is the method of Object class.
-> wait() is the non-static method.
-> wait() should be notified by notify() or notifyAll() methods.
Difference between wait and sleep method
===========================================
-> A wait can be "woken up" by another thread calling notify on the monitor which is being waited on
whereas a sleep cannot it can only be interrupted.
-> While sleeping a Thread does not release the locks it holds, while waiting releases the lock on the
object that wait() is called on.
-> sleep(n) says "I'm done with my timeslice, and please don't give me another one for at least n milliseconds."
The OS doesn't even try to schedule the sleeping thread until requested time has passed.
.wait() says "I'm done my timeslice. Don't give me another timeslice until someone calls notify()."
-> we can normally use sleep() for time-synchronization and wait() for multi-thread-synchronization.
Comments
Post a Comment