线程学习day3(线程间通信)

57 阅读1分钟
  1. 线程间通信(同步机制)
    1. 等待唤醒机制

      方法名说明
      wait()令当前线程进入阻塞状态,同时释放同步监视器
      notify()唤醒一个被wait()的线程(按优先级高低来判断,如果优先级相同,则随机唤醒线程)
      notifyAll()唤醒全部线程

      注意:
      ①这3个方法只能在同步方法和同步代码块使用
      ②不能再lock中使用这3个方法
      ③这个方法声明再Object类中

    2. wait()和sleep()方法的区别

      • 相同点:
        都会令线程进入阻塞状态
      • 不同点:
        1. 声明的位置:
          • wait方法声明再Object类中
          • sleep方法声明再Thread类中
        2. 使用场景:
          • wait方法只能在同步方法或同步代码块中使用
          • sleep方法可以在任何场景使用
        3. 在同步代码块和同步方法中使用的不同
          • wait方法会释放同步监视器
          • sleep方法不会释放同步监视器
        4. 解除阻塞的方式不同
          • wait方法等待指定时间结束后或使用notify()和notifyAll()
          • sleep方法等待指定时间结束后