diff options
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java b/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java new file mode 100644 index 00000000000..c4b293f19a1 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java @@ -0,0 +1,49 @@ +package com.yahoo.concurrent; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.AbstractExecutorService; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; + +/** + * {@link ExecutorService} implementation that runs all tasks in the calling thread. Useful for tests. + * + * @author jonmv + */ +public class InThreadExecutorService extends AbstractExecutorService { + + private boolean isShutdown = false; + + @Override + public void shutdown() { + isShutdown = true; + } + + @Override + public List<Runnable> shutdownNow() { + shutdown(); + return Collections.emptyList(); + } + + @Override + public boolean isShutdown() { + return isShutdown; + } + + @Override + public boolean isTerminated() { + return isShutdown; + } + + @Override + public boolean awaitTermination(long timeout, TimeUnit unit) { + return true; + } + + @Override + public void execute(Runnable command) { + command.run(); + } + +} |