Package org.openhab.core.util
Class SameThreadExecutorService
java.lang.Object
java.util.concurrent.AbstractExecutorService
org.openhab.core.util.SameThreadExecutorService
- All Implemented Interfaces:
AutoCloseable,Executor,ExecutorService,ScheduledExecutorService
@NonNullByDefault
public class SameThreadExecutorService
extends AbstractExecutorService
implements ScheduledExecutorService
ExecutorService implementation that runs all tasks in the calling thread in order to enable deterministic
testing.
Not for use outside tests
- Author:
- David Pace - Initial contribution, Ravi Nadahar - Adapted for more general use
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classAScheduledFuturethat wraps aFutureand always reports zero delay. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanawaitTermination(long timeout, @Nullable TimeUnit unit) voidbooleanbooleanNot supported ifdelayis non-zero.<V> ScheduledFuture<V> Not supported ifdelayis non-zero.scheduleAtFixedRate(@Nullable Runnable task, long initialDelay, long period, @Nullable TimeUnit unit) Will execute immediately and run only once.scheduleWithFixedDelay(@Nullable Runnable task, long initialDelay, long delay, @Nullable TimeUnit unit) Will execute immediately and run only once.voidshutdown()Future<?> <T> Future<T> <T> Future<T> Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor
-
Field Details
-
terminated
protected volatile boolean terminated
-
-
Constructor Details
-
SameThreadExecutorService
public SameThreadExecutorService()
-
-
Method Details
-
shutdown
public void shutdown()- Specified by:
shutdownin interfaceExecutorService
-
shutdownNow
- Specified by:
shutdownNowin interfaceExecutorService
-
isShutdown
public boolean isShutdown()- Specified by:
isShutdownin interfaceExecutorService
-
isTerminated
public boolean isTerminated()- Specified by:
isTerminatedin interfaceExecutorService
-
awaitTermination
- Specified by:
awaitTerminationin interfaceExecutorService- Throws:
InterruptedException
-
execute
-
submit
- Specified by:
submitin interfaceExecutorService- Overrides:
submitin classAbstractExecutorService
-
submit
- Specified by:
submitin interfaceExecutorService- Overrides:
submitin classAbstractExecutorService
-
submit
- Specified by:
submitin interfaceExecutorService- Overrides:
submitin classAbstractExecutorService
-
schedule
Not supported ifdelayis non-zero.- Specified by:
schedulein interfaceScheduledExecutorService- Throws:
NullPointerException- ifcommandisnull.UnsupportedOperationException- ifdelayis non-zero.
-
schedule
public <V> ScheduledFuture<V> schedule(@Nullable Callable<V> callable, long delay, @Nullable TimeUnit unit) Not supported ifdelayis non-zero.- Specified by:
schedulein interfaceScheduledExecutorService- Throws:
NullPointerException- ifcallableisnull.UnsupportedOperationException- ifdelayis non-zero.
-
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(@Nullable Runnable task, long initialDelay, long period, @Nullable TimeUnit unit) Will execute immediately and run only once.- Specified by:
scheduleAtFixedRatein interfaceScheduledExecutorService
-
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(@Nullable Runnable task, long initialDelay, long delay, @Nullable TimeUnit unit) Will execute immediately and run only once.- Specified by:
scheduleWithFixedDelayin interfaceScheduledExecutorService
-