Both are trying to do the similar thing, which is make some effect on thread.
I know that thread.sleep is to let the CURRENT thread to sleep and wait can let any thread to wait, if they are trying to get the object’s lock.
The question is, most of the time they are doing the similar thing – what makes you choose one over another?
One is used to synchronize Threads together while the other one is used to sleep for a given amount of time.
If you want to synchronize Threads together, user wait/notify. If you want to sleep for a known amount of time, use Thread.sleep.