Java线程池主动获取任务提升效率是否可行。。

公司这边有一个生产者消费者模型:定时任务每秒从redis取消息,然后交给线程池(ExecutorService)去执行。这个模型在高并发的情况下,必定出现线程池处理不过来的情况,我这边是思路是线程池在执行完一个任务后去检测目前的活跃线程数(this.getActiveCount()),如果活跃数小于最大线程数时,说明线程的任务队列已经为空,则去获取下一批Redis的数据,想问问有没有大神这样做过,安全性和效率方面如何。。

你可以线程池 中的每个线程都是不停的从redis中取消息来工作,如果没有消息,就等待,不需要去判断线程的任务队列是否为空。这样可以提高效率

额,我就我想的说一下,不行请指出来。谢谢,
生产者消费者模型:
1.如果存在生产者一段时间不生产,spring定时器还是会定时的去reids去读取。在没以后生产的时候是否可以关闭定时器?

        2.reids 好像有个订阅模式,用一个监听订阅一个订阅号,有生产在订阅号里面发布,监听启动定时器,让消费者消费。

        3.每个线程都是不停的从redis中取消息来工作,如果没有消息。隔多少时间停止定时任务。

我吓想的,只是感觉这样好想可行,

消息队列ActiveMQ