gpt4 book ai didi

java - java中ExecutorService异常处理

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:38 25 4
gpt4 key购买 nike

我正在使用Java的执行器服务功能。我想了解设计角度。

如果其中一批出现问题,处理该问题的最佳方法是什么?

我正在创建固定线程池,

ExecutorService pool = Executors.newFixedThreadPool(10);

此外,我还使用 invokeall() 来调用所有返回 future 对象的可调用对象。

这是我的场景 -

  1. 我有来自 xml 文件的 1000 条记录,我想保存到数据库中。我创建了 10 批处理,每批处理包含 100 条记录。

  2. 批处理开始处理(例如批处理1、批处理2、批处理3...批处理10),假设其中一个批处理(批处理7)在从 xml 解析记录时遇到特定记录的错误,并且无法保存到数据库中。

    • 所以我的问题是我该如何处理这种情况?

    • 如何获取/存储失败的批处理信息(上面的第 7 批)?

    • 我的意思是,如果任何批处理中有任何错误,我是否应该停止所有其他批处理?

    • 或者我可以在哪里存储失败批处理的信息以及如何在错误更正后将其用于进一步处理?

最佳答案

具有处理记录逻辑的处理程序应该有一个存储批处理号的变量。

理想情况下,处理程序应该对少数数据库错误集有有限的重试逻辑。

一旦重试计数耗尽,就需要人工干预,并且应该退出并抛出异常和批处理号。理想情况下,执行器应该调用 shutdownDown 。如果您的逻辑要求立即停止进程,那么您应该调用 shutdownNow 。理想情况下,您的设计应该能够抵抗此类故障,并且即使其中一个批处理发生故障,也可以让其他批处理继续工作。希望对您有帮助

关于java - java中ExecutorService异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34103754/

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