gpt4 book ai didi

java - 使执行程序转储成为队列的一部分

转载 作者:行者123 更新时间:2023-12-01 16:59:06 24 4
gpt4 key购买 nike

目前我正在使用执行器:

Executors.newSingleThreadExecutor();

但我的问题是,如果我放置太多任务,它们执行速度会太慢,并且在执行器工作时我的 UI 会挂起。所以我希望它的行为是执行器一次只执行任务。但是当提交新任务时,如果超过 5 个,我希望他删除排队的任务。

这可能吗?

最佳答案

Executors#newSingleThreadExecutor 只是直接实例化 ThreadPoolExecutor 的一个方便,它为您提供了更多的配置选项。您可以配置 ThreadPoolExecutor 来使用单个线程和固定长度的队列,并为其提供一个处理程序,该处理程序指示在提交新任务时应丢弃队列的内容,如下所示:

new ThreadPoolExecutor(
1, 1, // single thread
30, TimeUnit.SECONDS, // timeout, see javadoc
new LinkedBlockingQueue(1), // queue with capacity 1
new ThreadPoolExecutor.DiscardOldestPolicy() // ditch the queued task when a new one comes in
);

这里的关键部分是固定大小的队列(在本例中为 1)和拒绝处理程序参数:

A handler for rejected tasks that discards the oldest unhandled request and then retries execute

关于java - 使执行程序转储成为队列的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com