shaoshuai888

多线程 等待唤醒机制

一.线程间通信

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

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

二.等待唤醒机制

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

  相关API:

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

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

    void notify(): 唤醒一个线程

    void notifyAll:  唤醒所有线程

  注意:  

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

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

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

  wiia方法和sleep方法的区别:

    wait会释放锁

    sleep不会释放锁

  

posted on 2018-09-05 17:28  shaoshuai888  阅读(287)  评论(0编辑  收藏  举报

导航