我想了解执行服务的awaitTermination((方法中超时的理想值。我们应该如何决定理想的超时?如果我们用一天作为超时,会有害处吗?
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;
假设我正在将数据从一个数据库加载到另一个数据库。有时,由于网络问题,速度可能会减慢,甚至要上传的文档数量也可能增加。因此,判断最长时间变得有点困难。因此,在这种情况下,如果我使用一天作为超时(实际上,我想使用awaitTermination((,而不从executorService端超时(。这究竟有什么缺点?
awaitTermination(Long.MAX_VALUE,TimeUnit.DAYS(的缺点是什么?
因为不管怎样,一旦任务完成,executionservice就会终止
这取决于任务可以消耗多长时间。
在最坏的情况下,你最长的任务需要多长时间?假设在最坏的情况下需要1分钟,然后需要2分钟。您只需计算最坏情况下的时间加上缓冲区。
你只是不习惯开始的工作被无故取消,因为你可能会丢失数据。
如果你正在处理一个有确认的队列,并且你只有在你的工作完成后才确认,你可以立即终止,因为在下一次启动和超时后,你的工作人员会再次获得任务。(但要小心。如果服务器重新启动,你可能会陷入循环(