简述Java多线程中的sleep和wait异同点

77 阅读1分钟

简述Java多线程中的sleep和wait异同点?

相同点:

  1. 可以让线程进入冻结状态。

不同点:

  1. 调用方式:
  • sleep必须传时间。时间结束线程进入临时阻塞或者运行状态。
  • wait非必传时间,假设没有时间的话需要依靠同一把锁内的其它线程通过notify或者notifyAll进行唤醒。
  1. 所属类:
  • sleep属于Thread类的静态方法。
  • wait属于Object类的静态方法。
  1. 使用环境:
  • sleep非必在同步中使用。
  • wait必须在同步中使用。
  1. 同步中使用差别:假设都在同一把锁的同步中调用时,
  • sleep不会释放锁,其它子线程无法进入。
  • wait会释放锁,允许其它线程进入。