首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【多线程】之线程通讯wait和notify的使用

    1、定义 等待/通知机制,是指一个线程A调用了对象object的wait()方法进入等待状态,而另一个线程B调用了对象object的notify或者notifyAll()方法,线程A收到通知后从对象O的wait()方法返回,进而还行后续操作。 使用wait和notify方法实现线程之间的通信,这两个方法是Object类的方法。 注意细节: 1.1 调用wait()方法,会释放锁,线程状态由RUNNING->WAITNG,当前线程进入对象等待; 1.2 调用notify()/notifyAll()方法不会立马释放锁,notify()方法是将等待队列中的线程移到同步队列中,而notifyAll()则是全部移到同步队列中, 被移出的线程状态WAITING-->BLOCKED; 重点注意,等待队列和同步队列的转换;wait()后进入等待队列;notify()/notifyAll(),线程进入同步队列; 1.3 当前调用notify()/notifyAll()的线程释放锁了才算释放锁,才有机会唤醒wait线程; 1.4 从wait()返回的前提是必须获得调用对象锁,也就是说notify()与notifyAll()释放锁之后,wait()进入BLOCKED状态,如果其他线程 有竞争当前锁的话,wait线程继续争取锁资格。可以理解为,从同步队列中的线程抢占锁执行; 1.5 使用wait()、notify()、notifyAll()方法时需要先调对象加锁。这就是跟synchronized关键字配置使用; 2、代码运行过程

    01

    设计模式之中介者模式(mediator模式)引入中介者模式中介者模式的实例中介者模式分析

    大家想象一下有十个人要共同完成一个工作,他们要互相合作和沟通,并且根据对方的通知可能要改变自己的状态,但这通常会带来很多问题,流程过于复杂,使得每个人不仅要专注于自己的事情,还要与他人进行沟通,得到通知,需要兼顾很多状态的变化。这时候,我们考虑可以引入一个类似上帝视角的角色,就是引入一个中介者,他来负责接受每个人的通知,并将变化发送所需要的人去,就是要他来控制并调节工作的进度和细节,这个人往往是从整体考虑的,所以使得每个人工作者只需要考虑自己的问题,一旦有了变化,就通知仲裁者,交给仲裁者去决定就可以了。 所以最后就变成了,整个团队的交流过程,组员向中介者报告,中介者向组员下达只命令。 这在现实生活中也是常见的,每个部门通常都会有一个领导人,每个班级有一个班长,往往是班长负责接受同学们的信息,然后将上面的信息从班长这里发给同学们,这里的班长就相当于一个仲裁者,同学们就相当于组员。

    03
    领券