当前位置:评测网 > 电脑 > 正文

线程间通信 java中使用wait和notify进行单线程之间的通信

导语:人与人之间通过交流构成了这个丰富多彩的世界,在计算机中,通过即时通信工具传递信息为我么的生活增添了很多乐趣也提供了很多遍历,而在JAVA线程的世界里,线程之间的通信,可以极大的增强我们的功能,今天就带你一块走进线程通信的世界里

人与人之间通过交流构成了这个丰富多彩的世界,在计算机中,通过即时通信工具传递信息为我么的生活增添了很多乐趣也提供了很多遍历,而在JAVA线程的世界里,线程之间的通信,可以极大的增强我们的功能,今天就带你一块走进线程通信的世界里。

一、基本认识

在讲解java线程之间的问题时,我们先想一下,为什么需要线程之间的通信呢?我们举一个例子:

以上这个简单的案例就能够表达我们的意思,也就是需要合作办成某件事。在java中,我们想要完成某个功能,一个线程完成不了,这时候就需要两个或者是多个线程一块来完成了,多个线程一块合作这时候就需要交流,也就是通信了。

通信的方式很多,比如说共享内存、管道、mutex等等各种方式,不管是那种方式都是为了完成功能而已。

另外还有一个需要注意的问题,那就是什么是进程间通信?我们同样举一个例子。

下面我们就来看看如何进行通信。

二、单线程间通信实现

java解决单线程之间的通信很简单,大致上有三种,我们依次来分析实现一下。这里要完成一个功能,那就是生产者和消费者模型。假设我们想要完成的功能描述如下:

工厂生产完了东西之后,通知消费者消费,在生产出来之前,消费者等待。我们直接看实现方法。

上面的这个生产消费过程看起来完全没毛病,我们就写一下main方法中测试一下:

也就是说我们开启两个线程,一个用于生产,一个用于消费,没毛病吧。那我们就运行一下,看看结果。

我们一下子把所有的全部生产出来了,但是消费的时候消费了最后一个而且还是重复消费的。这就有问题了,我们明明想要的就是生产一个消费一个,这时候怎么办呢?这就用到了我们的等待通知模型。

现在我们再来测试一下:

我们再看一下测试结果吧。

以上就是单线程之间通信最简单的解决方法。当然了单线程的通信肯定是不能满足我们的日常需求的。而且对于上述问题我们还有很多其他的方式可以解决。这篇文章只是起到一个抛砖引玉的作用。

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表评测网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.pcapqz.com/diannao/142952.html 感谢你把文章分享给有需要的朋友!
上一篇:线程池原理 关于并发框架 Java原生线程池原理及Guava与之的补充 下一篇: pdf打印 Java预览及打印PDF的三种方法