ThreadPoolExecutor.CallerRunsPolicy 可伸缩队列
时间: 2023-10-31 08:42:47 浏览: 96
ThreadPoolExecutor.CallerRunsPolicy 是线程池的一个拒绝策略,当线程池中的任务队列已满,并且所有的线程都在工作时,新提交的任务将被该策略拒绝,并且会由提交该任务的线程执行该任务。也就是说,如果线程池无法处理新提交的任务,那么该任务将由调用 execute() 方法的线程来执行,这样就可以避免任务丢失。CallerRunsPolicy 策略会增加线程池的负载,因为当任务被拒绝时,执行任务的线程将被阻塞,直到任务执行完毕。
可伸缩队列是一种在任务数量增加时可以自动扩展的队列,它可以在需要时动态增加队列的大小,以容纳更多的任务。这种队列通常用于处理负载不断增加的情况,以确保线程池能够及时处理所有的任务。在 Java 中,可以使用 LinkedBlockingQueue 来实现可伸缩队列。LinkedBlockingQueue 是一个基于链表的阻塞队列,它的容量可以动态增加,因此适合用作任务队列。当线程池中的任务数量超过队列的容量时,新提交的任务将被阻塞,直到有线程从队列中取出任务并执行完毕。
阅读全文