关于java队列处理请求的设计
最近需要开发一个项目,程序设计用到生产者与消费者得思想。如下:
有两个生产者,分别是product_a和product_b
一个消费者,consumer
如今的需求是如果product_a有需要处理的请求,consumer必须先执行处理,无论product_b有没有请求过来。
开始我个人的想法有两个
1、在consumer中放置两个list集合,分别装载两个生产者得请求,只是将处理生产者a的请求的线程优先级设置为最大,而生产者b的用默认的优先级或者是最小的优先级
2、在consumer中用LinkedList来实现,生产者a的请求这addfirst(),b的则addLast(),处理请求的时候,从Linklist的
第一个元素开始处理,这样就保证了无论什么情况下,都会先处理生产者a的请求
当然了,我上面的两个想法我自己准备用第二种实现,但是由于我还是菜鸟的开发人员,所以在这里向各位前辈请教了,想听听各位的设计思想。小弟不胜感激
[解决办法]
听你这么描述,我感觉用代理,做个拦截好像就可以了。
[解决办法]
看到这个需求我的第一反应就是定义两个集合ListA,ListB,分别接受ProductA,ProductB的请求,先把处理ListA里面的请求。楼主你想通过A往前面压请求B往后面压请求,是个很好的思路。不过实现起来可能有点问题。
[解决办法]
首先想问下,如果c在执行pb请求的过程中,pa请求来了,c要中断pb请求处理立即响应pa请求吗?
其次,方法2中,如果pa的请求来了,c还没来得及处理,pa又来了个请求,如果是addfirst的话,第二个请求会先被处理,pa的请求顺序没有什么限定吗?
[解决办法]