I am a bit confused with Thread.sleep()
method. if Thread.sleep()
is a static method, how does two threads know which is put to sleep. For example,
Does it mean Thread.sleep() puts the current Thread to sleep?
Yes. Only the current thread can do that.
What if t1 wants to put t to sleep. that shouldn't be possible correct?
Right. You can set a volatile boolean
flag that will cause another thread to call Thread.sleep(...)
but another thread can't cause a thread to sleep.
volatile boolean shouldSleep = false;
...
// check this flag that might be set by another thread to see if I should sleep
if (shouldSleep) {
Thread.sleep(...);
}
It can find the current thread from Thread.currentThread()
. The current thread only can put itself to sleep.