多线程 等待唤醒机制

一.线程间通信

  概念: 多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同

  原因: 多个线程并发执行时,在默认情况下,Cpu是随机切换线程的,如果我们需要多个线程共同完成一件任务,并且我们希望他们有规律的执行,那么多线程之间需要一些协调通信,帮我们多线程共同操作一份数据

二.等待唤醒机制

  wait / notify就是线程间的一种协作机制,可以完成线程间的通信

  相关API:

    void wait(): 让线程等待,直到有其他线程调用notify或者notifyAll唤醒这个线程

    void wait(long timeout): 让线程等待,直到有其他线程调用notify或者notifyAll,或者等待时间到了线程自己会醒

    void notify(): 唤醒一个线程

    void notifyAll:  唤醒所有线程

  注意:  

    1. 上面的方法虽然是Object中的方法,但是不能直接通过对象调用,要放在同步代码块中,使用锁对象调用

    2. notify方法唤醒的是当前同步代码块中等待的线程

扫描二维码关注公众号,回复: 3070735 查看本文章

    3. 线程调用wait 方法后,会释放掉所对象

  wiia方法和sleep方法的区别:

    wait会释放锁

    sleep不会释放锁

  

猜你喜欢

转载自www.cnblogs.com/xiangshaui/p/9593401.html