【并发编程篇07】wait和sleep方法

43 阅读1分钟

wait和sleep方法

共同点: wait方法和sleep方法的效果都是让当前线程暂时放弃CPU的使用权,进入阻塞状态

不同点:

  • 方法归属不同
    • sleep方法是Thread的静态方法
    • wait方法是Object的成员方法
  • 醒来时机不同
    • 执行sleep(long)和wait(long)线程都会等待相应毫秒后醒来
    • wait(long)和wait() 还可以被notify唤醒,wait()如果唤醒就一直等待下去
    • 它们都可以被打断唤醒
  • 锁特性不同
    • wait方法的调用必须要先获取wait对象的锁,sleep则无此限制
    • wait方法执行后会释放对象锁,允许其他线程获得该对象锁
    • sleep如果在synchronized代码块中,并不会释放对象锁