43 lines
1.1 KiB
Java
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());
|
|
}
|
|
}
|