10、线程相关

Thread.sleep()、Thread.wait() 和Thread.yield()的区别

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) 后本线程才进入对象锁

你可能感兴趣的:(thread)