public final class DefaultThreadService extends AbstractService implements ThreadService
ThreadService.ThreadContext
Constructor and Description |
---|
DefaultThreadService() |
Modifier and Type | Method and Description |
---|---|
void |
dispose()
Performs any needed cleanup of the object's services, in preparation for
the object being retired (e.g., to make garbage collection possible).
|
ExecutorService |
getExecutorService()
Gets the
ExecutorService object used when ThreadService.run(java.util.concurrent.Callable<V>) is called. |
Thread |
getParent(Thread thread)
Returns the thread that called the specified thread.
|
ThreadService.ThreadContext |
getThreadContext(Thread thread)
Analyzes the
Context of the given thread. |
void |
invoke(Runnable code)
Executes the given code in a special dispatch thread, blocking until
execution is complete.
|
boolean |
isDispatchThread()
Gets whether the current thread is a dispatch thread for use with
ThreadService.invoke(java.lang.Runnable) and ThreadService.queue(java.lang.Runnable) . |
Thread |
newThread(Runnable r) |
void |
queue(Runnable code)
Queues the given code for later execution in a special dispatch thread.
|
<V> Future<V> |
run(Callable<V> code)
Asynchronously executes the given code in a new thread, as decided by the
thread service.
|
Future<?> |
run(Runnable code)
Asynchronously executes the given code in a new thread, as decided by the
thread service.
|
void |
setExecutorService(ExecutorService executor)
Sets the
ExecutorService object used when ThreadService.run(java.util.concurrent.Callable<V>) is called. |
getContext, initialize, registerEventHandlers, setContext, toString
compareTo, getInfo, getPriority, setInfo, setPriority
context
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
initialize, registerEventHandlers
context, getContext, setContext
getPriority, setPriority
compareTo
getInfo, setInfo
public <V> Future<V> run(Callable<V> code)
ThreadService
run
in interface ThreadService
code
- The code to execute.Future
that will contain the result once the execution
has finished. Call Future.get()
to access to the return
value (which will block until execution has completed).public Future<?> run(Runnable code)
ThreadService
run
in interface ThreadService
code
- The code to execute.Future
that can be used to block until the execution has
finished. Call Future.get()
to do so.public ExecutorService getExecutorService()
ThreadService
ExecutorService
object used when ThreadService.run(java.util.concurrent.Callable<V>)
is called.getExecutorService
in interface ThreadService
ExecutorService
, or null if an ExecutorService
is not used in this ThreadService
implementation.public void setExecutorService(ExecutorService executor)
ThreadService
ExecutorService
object used when ThreadService.run(java.util.concurrent.Callable<V>)
is called.setExecutorService
in interface ThreadService
executor
- The ExecutorService
for this ThreadService
to use internally for ThreadService.run(java.util.concurrent.Callable<V>)
calls.public boolean isDispatchThread()
ThreadService
ThreadService.invoke(java.lang.Runnable)
and ThreadService.queue(java.lang.Runnable)
.
In the case of AWT-based applications (e.g., Java on the desktop), this is typically the AWT Event Dispatch Thread (EDT). However, ultimately the behavior is implementation-dependent.
isDispatchThread
in interface ThreadService
public void invoke(Runnable code) throws InterruptedException, InvocationTargetException
ThreadService
In the case of AWT-based applications (e.g., Java on the desktop), this is typically the AWT Event Dispatch Thread (EDT). However, ultimately the behavior is implementation-dependent.
invoke
in interface ThreadService
code
- The code to execute.InterruptedException
- If the code execution is interrupted.InvocationTargetException
- If an uncaught exception occurs in the
code during execution.public void queue(Runnable code)
ThreadService
In the case of AWT-based applications (e.g., Java on the desktop), this is typically the AWT Event Dispatch Thread (EDT). However, ultimately the behavior is implementation-dependent.
queue
in interface ThreadService
code
- The code to execute.public Thread getParent(Thread thread)
ThreadService
This works only on threads which the thread service knows about, of course.
getParent
in interface ThreadService
thread
- the managed thread, null refers to the current threadThreadService
to spawn the
specified threadpublic ThreadService.ThreadContext getThreadContext(Thread thread)
ThreadService
Context
of the given thread.getThreadContext
in interface ThreadService
thread
- The thread to analyze.Context
. Either:
ThreadService.ThreadContext.SAME
- The thread was spawned by this
very thread service, and thus shares the same Context
.ThreadService.ThreadContext.OTHER
- The thread was spawned by a
different thread service, and thus has a different Context
.
ThreadService.ThreadContext.NONE
- It is unknown what spawned the
thread, so it is effectively Context
-free.public void dispose()
Disposable
dispose
in interface Disposable
dispose
in class AbstractService
public Thread newThread(Runnable r)
newThread
in interface ThreadFactory
Copyright © 2009–2015 SciJava. All rights reserved.