ExecutorService中超时的理想值

问题描述

我想了解executorservice的awaitTermination()方法中超时的理想值。我们应该如何确定理想的超时时间?如果我们将一天用作超时时间,会不会有害?

boolean awaitTermination(long timeout,TimeUnit unit) throws InterruptedException;

假设我正在将数据从一个数据库加载到另一个数据库。有时,由于网络问题,它可能会变慢,甚至上载的文档数量也会增加。因此,判断最大时间变得有些困难。因此,在这种情况下,如果我将一天用作超时(实际上,我想使用awaitTermination()而不使executorService端发生超时)。这样做的缺点到底是什么?

awaitTermination(Long.MAX_VALUE,TimeUnit.DAYS)的缺点是什么?

因为无论如何,一旦任务完成,executorservice将终止

解决方法

这取决于任务可以消耗多长时间。

在最坏的情况下,最长的任务将花费多长时间? 可以说,最坏的情况是需要1分钟。然后花2分钟。 您只需计算最坏情况的时间加上一个缓冲区即可。

您根本不会无故取消已开始的作业,因为您可能会丢失数据。

如果您正在工作,例如在确认队列中,只有在完成工作后您才能确认,您可以立即终止,因为在下一次启动时,超时后您的工作人员会再次获得任务。 (但是要小心。如果服务器重新启动,您可能会陷入循环)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...