我目前正在尝试用Java实现长时间运行的进程。 基于当前的逻辑,我试图根据使用单个计算单位所花费的时间来计算程序结束时的大致时间。例如:我正在运行发票进度以发送给多个供应商,每张发票需要10秒。因此,基于此,我将计算剩余待处理发票的时间。
我将以毫秒为单位保持开始时间。
long startmillis = System.currentTimeMillis();
long finishmillisforsingleVendor = System.currentTimeMillis();
long elapsedTime = finishmillisforsingleVendor - startmillis;
long approximateEndTime = elapsedTime/1000 * 25;// trying to calculate in seconds and multiply with 25 remaining invoices.
这是我不确定的部分。如何使用单个发票的经过时间来计算我的程序结束时间。
long percentageCompleted = System.currentTimeMillis()/1000 / approximateEndTime ;
我正在尝试计算任何给定时间点的百分比,以向用户显示到目前为止已经取得了多少进展。我不确定这是否正确。
由于
答案 0 :(得分:0)
从你提出问题的方式来看,我怀疑你会混淆几个条款。完成的百分比与经过的时间无关。
double percentComplete = 100.0*numberOfDocumentsCompleted/totalNumberOfDocuments;
虽然我不喜欢百分比,但我更喜欢简单的比例:
double completionStatus = (double)numberOfDocumentsCompleted/totalNumberOfDocuments;
long elapsedMillis = System.currentTimeMillis() - startMillis;
long estimatedTotalMillis = (long) (elapsedMillis / completionStatus);
long remainingMillis = estimatedTotalMillis - elapsedMillis;