java—executorservice中超时的理想值

vd8tlhqk  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(338)

我想了解executorservice的awaittermination()方法中超时的理想值。我们应该如何决定理想的超时时间?如果我们用一天作为暂停时间,会有伤害吗? boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException; 假设我正在将数据从一个数据库加载到另一个数据库。有时它可能会因为网络问题而变慢,甚至需要上传的文档数量也可能会增加。所以判断最大时间有点困难。所以在那个场景中,如果我使用一天作为超时(实际上,我想使用awaittermination(),而不需要executorservice端的超时)。这到底有什么坏处?
等待终止的缺点是什么(long.max\u value,timeunit.days)?
因为不管怎样,一旦任务完成,executorservice就会终止

fiei3ece

fiei3ece1#

这取决于一项任务可以花费多长时间。
在最坏的情况下,你最长的任务需要多长时间?假设在最坏的情况下需要1分钟,然后需要2分钟。您只需计算最坏的情况下的时间加上一个缓冲区。
你只是不知道启动的作业会被无缘无故地取消,因为你可能会丢失数据。
如果您正在确认队列中工作,并且您仅在作业完成时才确认,则可以立即终止,因为在下一次启动时,在超时后,您的工作人员将再次获得任务(但要小心。如果服务器重新启动,则可能会以循环结束)

相关问题