当前位置: 首页 > 图灵资讯 > 技术篇> java多线程等待唤醒机制的实现

java多线程等待唤醒机制的实现

来源:图灵教育
时间:2023-04-09 09:42:06

  假设现在有两个正在运行的线程,专门输入数据的一条线程,另一个专卖店负责阅读取数据。并且要实现,输入数据后,对方取出数据。java多线程当输入线程被抓住时CPU执行后,下一次输入线程可能会抓住CPU执行权,无法达到我们想要的效果。因此,我们需要在输入线程执行一次后等待并唤醒输出线程。然后让输出线程执行,等待一次,唤醒输入线程。这样,从而达到我们需要的线程运行状态。java多线程等待唤醒机制的诞生为了解决循环等待消耗的问题CPU和信息及时性问题。一般来说,它是由主动变为被动。当条件确定时,主动通知相应的线程,而不是要求线程本身。

  实现步骤创建User类

  这一类帮助我们模拟数据的输入和输出

  2.创建输入线程Input类

  这一步是等待唤醒机制的核心部分。输入线程第一次进入时fig为false,继续下去。set之后,将fig改为true,唤醒下一个线程(输出线程)。即使下一个输入线程获得了CPU的执行权,判断fig为true也会等待。

  3.创建输出线程Output类

  如果输出线程第一次被抢CPU的执行权,判断fig为false(user对象默认值为false),等待。当输入线程再次执行时,fig将被更改为true并唤醒输出线程,此时输出线程具有执行资格。输出线程再次执行后,将fig放置为false,并唤醒输入线程来回。

  4.创建测试类