sleep()方法是Thread类里面的,主要的意义就是让当前线程停止执行,让出cpu给其他的线程,但是不会释放对象锁资源以及监控的状态,当指定的时间到了之后又会自动恢复运行状态。
wait()方法是Object类里面的,主要的意义就是让线程放弃当前的对象的锁,进入等待此对象的等待锁定池,只有针对此对象调动notify方法后本线程才能够进入对象锁定池准备获取对象锁进入运行状态。调用当前sychronise锁对象的wait方法,即可放弃该锁。
notify和notifAll可以通知其他在等待的线程,唤醒。
名称 | 调用方式 | 作用 | 是否释放锁 | 备注 |
---|---|---|---|---|
sleep | Thread.sleep() | 让出CPU | 否 | |
wait | Object.wait() | 让出CPU | 是 | 当前线程必须获取锁之后才能调用wait方法 |
yield | Thread.yield() | 线程Running状态转变为Runnable状态 | 否 |
网友评论