Redian新闻
>
thread signaling 的一个问题
avatar
thread signaling 的一个问题# Java - 爪哇娇娃
D*i
1
版主如果觉得不妥,可以删掉。
屌 dick
鸡巴 cock
卵蛋 balls
锤子 prick
雀雀 weenie
命根子 johnson
朘 phallus
阴茎 penis
avatar
p*i
2
背景其实是传统的producer, consumer case:
producers 会产生三种不同priority 的events,
consumers 必须1. 总是优先处理高priority的event, 2.同priority的events按先来
后到处理。
刚开始的设想是用priorityblockingqueue, 方便快捷
第一个concern是: priorityblockingqueue无法保证同priority的events能按先来后
到处理。
这个可以通过rewrite comparator解决
第二个concern比较大: priorityblockingqueue是用heap实现的, enqueue and
dequeue都是 log(n) 的操作,
对于我们的大数据量大约是不妥的
现在的想法是只好化简为繁作三个seperate FIFO queues, 分别对应high, medium,
low priority。
好处是dequeue, enqueue都是 O(1)了
坏处是似乎producers, comsumer之间的signalling只好我自己来做了?
除了wait, notify什么的, 还有别的选择吗?
有什么需要注意的吗?
avatar
A*a
3
007
His thing

【在 D*****i 的大作中提到】
: 版主如果觉得不妥,可以删掉。
: 屌 dick
: 鸡巴 cock
: 卵蛋 balls
: 锤子 prick
: 雀雀 weenie
: 命根子 johnson
: 朘 phallus
: 阴茎 penis

avatar
g*g
4
这不难呀,你需要的是实现一个自己的BlockingQueue,里面放三个
LinkedBlockingQueue,按三个优先级,把那些方法wrap一遍。接下来你需要的是一个
Threadpool。ThreadPoolExecutor拿过来直接用对你就够了。一个小时的活。
什么wait/notify统统用不到。没事把java.util.concurrent看一看,里面很多好东西。

【在 p****i 的大作中提到】
: 背景其实是传统的producer, consumer case:
: producers 会产生三种不同priority 的events,
: consumers 必须1. 总是优先处理高priority的event, 2.同priority的events按先来
: 后到处理。
: 刚开始的设想是用priorityblockingqueue, 方便快捷
: 第一个concern是: priorityblockingqueue无法保证同priority的events能按先来后
: 到处理。
: 这个可以通过rewrite comparator解决
: 第二个concern比较大: priorityblockingqueue是用heap实现的, enqueue and
: dequeue都是 log(n) 的操作,

avatar
wh
5
是viamedia吗?第一句话又不像。

【在 D*****i 的大作中提到】
: 版主如果觉得不妥,可以删掉。
: 屌 dick
: 鸡巴 cock
: 卵蛋 balls
: 锤子 prick
: 雀雀 weenie
: 命根子 johnson
: 朘 phallus
: 阴茎 penis

avatar
m*r
6
en. since she only has 3 different levels, this is how i would do it.
why do we need threadPool for this queue implementation?

西。

【在 g*****g 的大作中提到】
: 这不难呀,你需要的是实现一个自己的BlockingQueue,里面放三个
: LinkedBlockingQueue,按三个优先级,把那些方法wrap一遍。接下来你需要的是一个
: Threadpool。ThreadPoolExecutor拿过来直接用对你就够了。一个小时的活。
: 什么wait/notify统统用不到。没事把java.util.concurrent看一看,里面很多好东西。

avatar
D*i
7
不是。

【在 wh 的大作中提到】
: 是viamedia吗?第一句话又不像。
avatar
g*g
8
Not for queue, but for producer/consumer. Why do you want to buy wheels and
a chassis when you can buy a car.

【在 m****r 的大作中提到】
: en. since she only has 3 different levels, this is how i would do it.
: why do we need threadPool for this queue implementation?
:
: 西。

avatar
m*r
9
because i like my car but i hate the wheels on the car?
i suspect she doesn't really care about the producer/consumer people.

and

【在 g*****g 的大作中提到】
: Not for queue, but for producer/consumer. Why do you want to buy wheels and
: a chassis when you can buy a car.

avatar
p*i
10
good idea.
thanks
我OO的思想还是很差啊 , 习惯性的还是C的过程型的思维。。。

西。

【在 g*****g 的大作中提到】
: 这不难呀,你需要的是实现一个自己的BlockingQueue,里面放三个
: LinkedBlockingQueue,按三个优先级,把那些方法wrap一遍。接下来你需要的是一个
: Threadpool。ThreadPoolExecutor拿过来直接用对你就够了。一个小时的活。
: 什么wait/notify统统用不到。没事把java.util.concurrent看一看,里面很多好东西。

avatar
p*2
11

西。
确实这样就可以了。没必要用PriorityQueue。Queue本来就按照先来后到的顺序

【在 g*****g 的大作中提到】
: 这不难呀,你需要的是实现一个自己的BlockingQueue,里面放三个
: LinkedBlockingQueue,按三个优先级,把那些方法wrap一遍。接下来你需要的是一个
: Threadpool。ThreadPoolExecutor拿过来直接用对你就够了。一个小时的活。
: 什么wait/notify统统用不到。没事把java.util.concurrent看一看,里面很多好东西。

avatar
p*2
12

and
不过用个thread也无所谓吧?这个应该不是关键吧?

【在 g*****g 的大作中提到】
: Not for queue, but for producer/consumer. Why do you want to buy wheels and
: a chassis when you can buy a car.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。