Thread.yield() 会将当前线程暂时让位一小段时间,让其它的线程有机会运行,过了这段时间后,该线程继承运行。上述功能也可以用Thread.sleep()方法实现。
Object.wait() 和Thread.yield()有什么区别
1)定义上 wait() 的启动办法是notify() 和 notifyAll()方法;yield()会自动切换回来。
2)wait() 方法是object的所以他只停止了current Thread 的一个锁,这可能产生的结果就是如果还有锁锁着其他threads那么那些thread可就惨了,所以要慎用; yield() 主要用在自行判断优先级的场合,是一个主动的暂停。3)wait()将所有资源让出来,等得到通知后在参加资源竞争,yield()将cpu资源让出来但 马上就参加cpu资源竞争。
答案 :sleep 是线程类 (Thread) 的静态方法 , 导致此线程暂停执行指定时间,给执行机会给其他
线程,但是监控状态依然保持,
到时后会自动恢复。调用 sleep 不会释放对象锁。 wait() 是 Object 类的方法,对此对象调用 wait
方法导致本线程放弃对象锁,进入等待
此对象的等待锁定池,只有针对此对象发出 notify 方法 ( 或 notifyAll) 后本线程才进入对象锁