org.scijava.thread
Interface ThreadService

All Superinterfaces:
Comparable<Prioritized>, Contextual, Disposable, HasPluginInfo, Prioritized, RichPlugin, SciJavaPlugin, SciJavaService, Service, ThreadFactory
All Known Implementing Classes:
DefaultThreadService

public interface ThreadService
extends SciJavaService, ThreadFactory

Interface for the thread handling service.

Author:
Curtis Rueden

Nested Class Summary
static class ThreadService.ThreadContext
           
 
Method Summary
 Thread getParent(Thread thread)
          Returns the thread that called the specified thread.
 ThreadService.ThreadContext getThreadContext(Thread thread)
          Analyzes the ThreadService.ThreadContext 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 invoke(java.lang.Runnable) and queue(java.lang.Runnable).
 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.
 
Methods inherited from interface org.scijava.service.Service
initialize, registerEventHandlers
 
Methods inherited from interface org.scijava.Contextual
context, getContext, setContext
 
Methods inherited from interface org.scijava.Prioritized
getPriority, setPriority
 
Methods inherited from interface java.lang.Comparable
compareTo
 
Methods inherited from interface org.scijava.plugin.HasPluginInfo
getInfo, setInfo
 
Methods inherited from interface org.scijava.Disposable
dispose
 
Methods inherited from interface java.util.concurrent.ThreadFactory
newThread
 

Method Detail

run

<V> Future<V> run(Callable<V> code)
Asynchronously executes the given code in a new thread, as decided by the thread service. Typically this means that the service allocates a thread from its pool, but ultimately the behavior is implementation-dependent. This method returns immediately.

Parameters:
code - The code to execute.
Returns:
A 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).

run

Future<?> run(Runnable code)
Asynchronously executes the given code in a new thread, as decided by the thread service. Typically this means that the service allocates a thread from its pool, but ultimately the behavior is implementation-dependent. This method returns immediately.

Parameters:
code - The code to execute.
Returns:
A Future that can be used to block until the execution has finished. Call Future.get() to do so.

isDispatchThread

boolean isDispatchThread()
Gets whether the current thread is a dispatch thread for use with invoke(java.lang.Runnable) and 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.

Returns:
True iff the current thread is considered a dispatch thread.

invoke

void invoke(Runnable code)
            throws InterruptedException,
                   InvocationTargetException
Executes the given code in a special dispatch thread, blocking until execution is complete.

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.

Parameters:
code - The code to execute.
Throws:
InterruptedException - If the code execution is interrupted.
InvocationTargetException - If an uncaught exception occurs in the code during execution.

queue

void queue(Runnable code)
Queues the given code for later execution in a special dispatch thread.

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.

Parameters:
code - The code to execute.

getParent

Thread getParent(Thread thread)
Returns the thread that called the specified thread.

This works only on threads which the thread service knows about, of course.

Parameters:
thread - the managed thread, null refers to the current thread
Returns:
the thread that asked the ThreadService to spawn the specified thread

getThreadContext

ThreadService.ThreadContext getThreadContext(Thread thread)
Analyzes the ThreadService.ThreadContext of the given thread.

Parameters:
thread - The thread to analyze.
Returns:
Information about the thread's ThreadService.ThreadContext. Either:


Copyright © 2009–2015 SciJava. All rights reserved.