#30天专注成长计划#10th day使用wait() notiry() 实现线程安全的队列的通信

题目:

使用 wait notify 实现一个队列,队列有2个方法,add 和 get 。

add方法往队列中添加元素,

get方法往队列中获得元素。队列必须是线程安全的。

如果get执行时,队列为空,线程必须阻塞等待,直到有队列有数据。

如果add时,队列已经满,则add线程要等待,直到队列有空闲空间。

实现这么一个队列,并写一个测试代码,使他工作在多线程的环境下,证明,它的工作是正确的。

分析:队列,阻塞,安全,通知 。看代码,写出来供大家讨论。希望可以抛砖引玉的作用,可以用生产模式来做,题目中一个生产数据,一个消费数据,我用

自己的方法实现,由于本人能力有限,希望大神给予指导。针对这个题目有一些好的建议。

/*

* .使用 wait notify 实现一个队列,队列有2个方法,add 和 get 。add方法往队列中添加元素,get方法往队列中获得元素。

* 队列必须是线程安全的。 如果get执行时,队列为空,线程必须阻塞等待,直到有队列有数据。如果add时,队列已经满,则add线程要等待,直到队列有空闲空间。

* 实现这么一个队列,并写一个测试代码,使他工作在多线程的环境下,证明,它的工作是正确的。给出程序和运行的截图。

*/


接着:



运行结果如下:

往队列中放的是woshi--1

我从队列中取的数据是---woshi--1----size=0

往队列中放的是woshi--1

我从队列中取的数据是---woshi--1----size=0

往队列中放的是woshi--2

往队列中放的是woshi--2

往队列中放的是woshi--3

往队列中放的是woshi--4

往队列中放的是woshi--5

往队列中放的是woshi--6

我从队列中取的数据是---woshi--2----size=5

我从队列中取的数据是---woshi--2----size=4

我从队列中取的数据是---woshi--3----size=3

我从队列中取的数据是---woshi--4----size=2

我从队列中取的数据是---woshi--5----size=1

我从队列中取的数据是---woshi--6----size=0

往队列中放的是woshi--7

往队列中放的是woshi--8

往队列中放的是woshi--9

往队列中放的是woshi--10

往队列中放的是woshi--11

往队列中放的是woshi--12

往队列中放的是woshi--13

我从队列中取的数据是---woshi--10----size=6

我从队列中取的数据是---woshi--11----size=5

我从队列中取的数据是---woshi--12----size=4

我从队列中取的数据是---woshi--13----size=3

我从队列中取的数据是---woshi--7----size=2

我从队列中取的数据是---woshi--8----size=1

我从队列中取的数据是---woshi--9----size=0

往队列中放的是woshi--3

往队列中放的是woshi--4

往队列中放的是woshi--5

往队列中放的是woshi--6

往队列中放的是woshi--7

往队列中放的是woshi--8

我从队列中取的数据是---woshi--3----size=5

我从队列中取的数据是---woshi--4----size=4

我从队列中取的数据是---woshi--5----size=3

我从队列中取的数据是---woshi--6----size=2

我从队列中取的数据是---woshi--7----size=1

往队列中放的是woshi--9

往队列中放的是woshi--10

我从队列中取的数据是---woshi--10----size=2

我从队列中取的数据是---woshi--8----size=1

我从队列中取的数据是---woshi--9----size=0

往队列中放的是woshi--14

往队列中放的是woshi--15

我从队列中取的数据是---woshi--14----size=1

我从队列中取的数据是---woshi--15----size=0

往队列中放的是woshi--16

我从队列中取的数据是---woshi--16----size=0

往队列中放的是woshi--11

我从队列中取的数据是---woshi--11----size=0

往队列中放的是woshi--12

我从队列中取的数据是---woshi--12----size=0

往队列中放的是woshi--17

往队列中放的是woshi--18

我从队列中取的数据是---woshi--17----size=1

我从队列中取的数据是---woshi--18----size=0

往队列中放的是woshi--19

我从队列中取的数据是---woshi--19----size=0

往队列中放的是woshi--13

我从队列中取的数据是---woshi--13----size=0

往队列中放的是woshi--14

我从队列中取的数据是---woshi--14----size=0

往队列中放的是woshi--15

我从队列中取的数据是---woshi--15----size=0

往队列中放的是woshi--16

我从队列中取的数据是---woshi--16----size=0

往队列中放的是woshi--17

我从队列中取的数据是---woshi--17----size=0

往队列中放的是woshi--18

我从队列中取的数据是---woshi--18----size=0

往队列中放的是woshi--19

我从队列中取的数据是---woshi--19----size=0

停止后线程处于阻塞状态,程序还没有停掉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容