diff options
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent')
-rw-r--r-- | plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java index 5a9905e821..89e21dfc26 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ConcurrencyUtil.java @@ -12,6 +12,7 @@ package org.eclipse.net4j.util.concurrent; import org.eclipse.net4j.util.container.IManagedContainer; +import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; /** @@ -86,4 +87,32 @@ public final class ConcurrencyUtil return null; } + + /** + * @since 3.6 + */ + public static void execute(Object executor, Runnable runnable) + { + if (executor instanceof Executor) + { + ((Executor)executor).execute(runnable); + return; + } + + ExecutorService executorService = getExecutorService(executor); + if (executorService == null && executor instanceof IManagedContainer) + { + executorService = getExecutorService((IManagedContainer)executor); + } + + if (executorService != null) + { + executorService.execute(runnable); + return; + } + + Thread thread = new Thread(runnable, runnable.getClass().getSimpleName()); + thread.setDaemon(true); + thread.start(); + } } |