IProgressMonitor を SubMonitor に変換すると、いつでも SubMonitor.setWorkRemaining を呼び出して残りのティック数を再分配できます。
SubMonitor の javadoc には、ティックの総数が事前にわからない場合に進行状況を報告する方法を示す次の例があります。
// This example demonstrates how to report logarithmic progress in
// situations where the number of ticks cannot be easily computed in advance.
void doSomething(IProgressMonitor monitor, LinkedListNode node) {
SubMonitor progress = SubMonitor.convert(monitor);
while (node != null) {
// Regardless of the amount of progress reported so far,
// use 0.01% of the space remaining in the monitor to process the next node.
progress.setWorkRemaining(10000);
doWorkOnElement(node, progress.newChild(1));
node = node.next;
}
}