Java ScheduledExecutorService生产者\消费者
我有下一个项目: 基于Spring(3.2)的Web应用程序(Tomcat7),在后台我有几个任务 我有一个队列,里面有一些信息要处理。此队列正在定期更新(但仅当它为空时) 另外,我还有几个线程,它们周期性地将来自这个队列和进程的数据排队 对于调度,我想使用ScheduledExecutorService 我有几个问题:Java ScheduledExecutorService生产者\消费者,java,concurrency,producer-consumer,java.util.concurrent,blockingqueue,Java,Concurrency,Producer Consumer,Java.util.concurrent,Blockingqueue,我有下一个项目: 基于Spring(3.2)的Web应用程序(Tomcat7),在后台我有几个任务 我有一个队列,里面有一些信息要处理。此队列正在定期更新(但仅当它为空时) 另外,我还有几个线程,它们周期性地将来自这个队列和进程的数据排队 对于调度,我想使用ScheduledExecutorService 我有几个问题: 如何保持这个队列?我认为这应该是全球性的。我应该在某个“holder”类中将其设置为静态吗?这不是一个糟糕的设计吗 使用ScheduledExecutorService初始化此
singleton
来管理它init方法
配置bean,或者在类中实现initializebean
接口ScheduledExecutorService
的线程号可通过构造函数参数进行配置。如果您有多种类型的任务,并且希望在单独的线程池中运行它们,则可以使用多个ScheduledExecutorService
实例。但是,如果您的所有任务都属于同一类型,我认为不需要多个ScheduledExecutorService
实例ScheduledThreadPoolExecutor
具有类java.util.concurrent.ScheduledThreadPoolExecutor.DelayedWorkQueue.DelayedWorkQueue
的内部工作队列(并且它是不可配置的)。我不知道你把ArrayBlockingQueue放在哪里了谢谢,关于第4项,我需要有一个可更新的队列,其中包含一些由工作线程处理的数据,因为据我所知,DelayedWorkQueue位于ScheduledExecutorService中,我在那里提交的是工作线程。