sleep wait yield


sleep、wait和yield都是暂停线程的方法。

定义的类

sleep()和yield()方法是定义在Thread类中,而wait()方法是定义在Object类中。

sleep

在Java中Sleep方法有两个,一个只有一个毫秒参数,另一个有毫秒和纳秒两个参数。

sleep(long millis);
sleep(long millis, int nanos);
  1. 是一个静态方法,让当前执行的线程(而不是调用sleep的线程)sleep指定的时间。
  2. 不会释放锁
  3. 如果其他的线程中断了一个休眠的线程,sleep方法会抛出Interrupted Exception
  4. 休眠的线程在唤醒之后会先进入就绪态runnable,不保证能获取到CPU

wait

实现线程间通信,应在同步代码块中调用。

  1. 是一个实例方法,并且只能在其他线程调用本实例的notify()方法时被唤醒。
  2. 会释放锁
  3. 通常有条件地执行,线程会一直处于wait状态,直到某个条件变为真

yield

释放线程所占有的CPU资源,从而让其他线程有机会运行,但是不能保证某个特定的线程能够获得CPU资源。
谁能获得CPU完全取决于调度器,在有些情况下调用yield方法的线程甚至会再次得到CPU资源。

  1. 让优先级大于等于执行yield的线程的线程有机会执行。

Reference


Author: csy99
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source csy99 !
评论
 Previous
design pattern design pattern
简介软件工程中,设计模式是对软件设计中普遍存在的各种问题所提出的解决方案。 编写代码,需要解决耦合性、内聚性、可维护性、可扩展性、重用性、灵活性的问题。 低耦合:该是哪个模块的错误就在哪个模块报错 高内聚: 代码重用性:相同功能的代码,不用
2020-08-20
Next 
hands on: 15 sequence hands on: 15 sequence
RNNRN: recurrent neuron RNN has connections pointing backward. At time step t, RN receives the inputs $x_t$ as well as i
2020-08-16
  TOC