Java 具有强制队列的ThreadPoolExecutor
传统的ThreadPoolExecutor仅在传入任务没有可用的空闲核心线程时,才使用提供的BlockingQueue对项目进行排队。如果存在空闲的核心线程,执行器将尝试直接为传入任务分配线程 我想要一个稍微不同的行为。我希望所有任务都强制提交到BlockingQueue,executor服务只从队列轮询任务 我将有我自己的BlockingQueue实现,它将根据检查在poll()中提供项目(检查处理任务的业务逻辑过程),如果检查失败,将不会在poll()中提供项目。我相信,ThreadPoolExecutor的实现已经假设poll()返回null并不一定意味着队列是空的 我知道这个模型有一个问题。传统ThreadPoolExecutor中的核心线程仅在任务通过其execute()方法提交给执行器时创建。现在,如果我重写execute()方法将任务直接排入BlockingQueue,它可能不会创建核心线程。我可以通过预启动核心线程并将其设置为不超时来解决这个问题,这样核心线程将始终处于活动状态。我还需要验证num核心线程是否未配置0 这个模型行得通吗?我是不是错过了处理案件的机会?Java 具有强制队列的ThreadPoolExecutor,java,multithreading,concurrency,java.util.concurrent,threadpoolexecutor,Java,Multithreading,Concurrency,Java.util.concurrent,Threadpoolexecutor,传统的ThreadPoolExecutor仅在传入任务没有可用的空闲核心线程时,才使用提供的BlockingQueue对项目进行排队。如果存在空闲的核心线程,执行器将尝试直接为传入任务分配线程 我想要一个稍微不同的行为。我希望所有任务都强制提交到BlockingQueue,executor服务只从队列轮询任务 我将有我自己的BlockingQueue实现,它将根据检查在poll()中提供项目(检查处理任务的业务逻辑过程),如果检查失败,将不会在poll()中提供项目。我相信,ThreadPool
你的想法。如果我理解正确,你会将任务提交给某个线程池,但你想根据某种逻辑选择是否真正处理这些任务?在这种情况下:
,这将为检查逻辑提供多线程