common-utils/src/test/java/org/warp/commonutils/concurrency/executor/TestScheduledTaskLifecycle....

43 lines
1.1 KiB
Java

package org.warp.commonutils.concurrency.executor;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class TestScheduledTaskLifecycle {
@Test
public void testScheduledTaskLifecycle() throws InterruptedException {
var scheduler = Executors.newScheduledThreadPool(100);
var lifecycle = new ScheduledTaskLifecycle();
AtomicInteger runningTasks = new AtomicInteger();
for (int i = 0; i < 49; i++) {
lifecycle.registerScheduledTask(scheduler.scheduleAtFixedRate(() -> {
lifecycle.startScheduledTask();
runningTasks.incrementAndGet();
try {
Thread.sleep(33);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
runningTasks.decrementAndGet();
lifecycle.endScheduledTask();
}
}, 0, 1, TimeUnit.MICROSECONDS));
}
Thread.sleep(96);
lifecycle.cancelAndWait();
System.out.println("stopped");
Assertions.assertEquals(0, runningTasks.get());
}
}