VirtualRequestExecutorService.java
package sprout.server.builtins;
import sprout.context.ContextPropagator;
import sprout.context.ContextSnapshot;
import sprout.server.RequestExecutorService;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class VirtualRequestExecutorService implements RequestExecutorService {
private final ExecutorService pool = Executors.newVirtualThreadPerTaskExecutor();
private final List<ContextPropagator> propagators;
public VirtualRequestExecutorService(List<ContextPropagator> propagators) {
this.propagators = propagators;
}
@Override
public void execute(Runnable task) {
final ContextSnapshot snapshot = new ContextSnapshot(propagators);
pool.execute(snapshot.wrap(task));
}
@Override
public void shutdown() {
pool.shutdown();
}
}