Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使执行器转储成为队列的一部分_Java_Executor - Fatal编程技术网

Java 使执行器转储成为队列的一部分

Java 使执行器转储成为队列的一部分,java,executor,Java,Executor,目前我正在使用遗嘱执行人: Executors.newSingleThreadExecutor(); 但我的问题是,如果我把太多的任务放进去,它们执行得太慢,我的UI在执行者工作时挂起。所以我希望执行者一次只执行任务。但是,当提交新任务时,如果队列中的任务超过5个,我希望他放弃该任务 这可能吗?Executors#newSingleThreadExecutor只是方便直接实例化ThreadPoolExecutor,这为您提供了更多配置选项。您可以将ThreadPoolExecutor配置为使用

目前我正在使用遗嘱执行人:

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)和拒绝处理程序参数:

被拒绝任务的处理程序,该处理程序丢弃最旧的未处理请求,然后重试执行

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)和拒绝处理程序参数:

被拒绝任务的处理程序,该处理程序丢弃最旧的未处理请求,然后重试执行