common-utils/src/main/java/org/warp/commonutils/concurrency/executor/PermitReleasingRunnableDeco...

33 lines
737 B
Java

package org.warp.commonutils.concurrency.executor;
import org.jetbrains.annotations.NotNull;
public final class PermitReleasingRunnableDecorator extends RunnableDecorator {
@NotNull
private final QueueSizeUpdater queueSizeUpdater;
PermitReleasingRunnableDecorator(@NotNull final Runnable task,
@NotNull final QueueSizeUpdater queueSizeUpdater) {
super(task);
this.queueSizeUpdater = queueSizeUpdater;
}
@Override
public void run() {
try {
queueSizeUpdater.update(true);
} finally {
try {
super.run();
} finally {
queueSizeUpdater.update(false);
}
}
}
@Override
public final String toString() {
return String.format("%s[delegate='%s']", getClass().getSimpleName(), super.toString());
}
}