生产者消费者场景-wait、notify及BlockingQueue两种方式实现

目录 技术

生产者消费者场景用典型的wait、notify实现方式如下:

1、创建一个生产者
1

2、创建一个消费者
1

3、测试代码运行结果
1

1

通过BlockingQueue方式代替上面的方式:
1、创建一个生产者
1

2、创建一个消费者
1

3、测试代码运行结果
1

1

附上BlockingQueue中 take、offer、put、add的一些比较
1
offer:
将指定元素插入此队列中(如果立即可行且不会违反容量限制),成功时返回 true,如果当前没有可用的空间,则返回 false,不会抛异常
put:
将指定元素插入此队列中,将等待可用的空间.通俗点说就是>maxSize 时候,阻塞,直到能够有空间插入元素
take:
获取并移除此队列的头部,在元素变得可用之前一直等待 。queue的长度 == 0 的时候,一直阻塞
add:
和collection的add一样,没什么可以说的。如果当前没有可用的空间,则抛出 IllegalStateException

暂无评论

发表评论

电子邮件地址不会被公开。