sleep()和yield()

sleeep()的作用是让线程睡眠(让出CPU的执行权),当前线程从运行状态进入到阻塞状态,sleep()一般会指定睡眠的时间,当线程到时执行时间后,线程会从阻塞状态转换成就绪状态,从而等待CPU的调度。sleep方法只是让出了CPU的执行权,并不会释放同步资源锁。

yield()的作用是让步,它能使线程从运行状态转变成就绪状态。但是不能保证当前线程调用yield后,其他线程一定能获取执行权。当前线程有可能还会继续执行。

wait()和sleep()

wait是属于Object方法,使用wait方法会释放锁,其他线程可获取同步锁。不需要捕获异常;需要配合notify()或notifyAll()方法使用。

sleep方法数与Thread,需要捕获异常,一般会添加睡眠时间;使用时不会释放锁,睡眠时间到达就会进入就绪状态。