The current thread blocks for approximately sec seconds, which may be a fractional quantity. That is, the current thread is marked as sleeping and after sec seconds have passed (real time), it is marked as runnable. When exactly the thread runs after it gets marked runnable is subject to other dynamics, especially the number and priority of other threads that are runnable.