sleep和yield区别

  sleep和yield区别:

  1、sleep()方法会给其他线程运行的机会,而不考虑其他线程的优先级,因此会给较低线程一个运行的机会;yield()方法只会给相同优先级或者更高优先级的线程一个运行的机会。

  2、当线程执行了sleep(long millis)方法后,将转到阻塞状态,参数millis指定睡眠时间;当线程执行了yield()方法后,将转到就绪状态。

  3、sleep()方法声明抛出InterruptedException异常,而yield()方法没有声明抛出任何异常

  4、sleep()方法比yield()方法具有更好的移植性

  如果希望明确地让一个线程给另外一个线程运行的机会,可以采取以下的办法之一:

  1、调整各个线程的优先级

  2、让处于运行状态的线程调用Thread.sleep()方法

  3、让处于运行状态的线程调用Thread.yield()方法

  4、让处于运行状态的线程调用另一个线程的join()方法

  首先,wait()和notify(),notifyAll()是Object类的方法,sleep()和yield()是Thread类的方法。

  (1)。常用的wait方法有wait()和wait(long timeout):

  void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

  void wait(long timeout) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

  wait()后,线程会释放掉它所占有的"锁标志",从而使线程所在对象中的其它synchronized数据可被别


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部