Package net.spy.memcached.compat
Class SyncThread<T>
- java.lang.Object
-
- java.lang.Thread
-
- net.spy.memcached.compat.SpyThread
-
- net.spy.memcached.compat.SyncThread<T>
-
- All Implemented Interfaces:
java.lang.Runnable
public class SyncThread<T> extends SpyThread
Thread that invokes a callable multiple times concurrently.
-
-
Constructor Summary
Constructors Constructor Description SyncThread(java.util.concurrent.CyclicBarrier b, java.util.concurrent.Callable<T> c)
Get a SyncThread that will call the given callable when the given barrier allows it past.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <T> java.util.Collection<SyncThread<T>>
getCompletedThreads(int num, java.util.concurrent.Callable<T> callable)
Get a collection of SyncThreads that all began as close to the same time as possible and have all completed.static <T> int
getDistinctResultCount(int num, java.util.concurrent.Callable<T> callable)
Get the distinct result count for the given callable at the given concurrency.T
getResult()
Get the result from the invocation.void
run()
Wait for the barrier, invoke the callable and capture the result or an exception.-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Constructor Detail
-
SyncThread
public SyncThread(java.util.concurrent.CyclicBarrier b, java.util.concurrent.Callable<T> c)
Get a SyncThread that will call the given callable when the given barrier allows it past.- Parameters:
b
- the barrierc
- the callable
-
-
Method Detail
-
run
public void run()
Wait for the barrier, invoke the callable and capture the result or an exception.- Specified by:
run
in interfacejava.lang.Runnable
- Overrides:
run
in classjava.lang.Thread
-
getResult
public T getResult() throws java.lang.Throwable
Get the result from the invocation.- Returns:
- the result
- Throws:
java.lang.Throwable
- if an error occurred when evaluating the callable
-
getCompletedThreads
public static <T> java.util.Collection<SyncThread<T>> getCompletedThreads(int num, java.util.concurrent.Callable<T> callable) throws java.lang.InterruptedException
Get a collection of SyncThreads that all began as close to the same time as possible and have all completed.- Type Parameters:
T
- the result type of the SyncThread- Parameters:
num
- the number of concurrent threads to executecallable
- the thing to call- Returns:
- the completed SyncThreads
- Throws:
java.lang.InterruptedException
- if we're interrupted during join
-
getDistinctResultCount
public static <T> int getDistinctResultCount(int num, java.util.concurrent.Callable<T> callable) throws java.lang.Throwable
Get the distinct result count for the given callable at the given concurrency.- Type Parameters:
T
- the type of the callable- Parameters:
num
- the concurrencycallable
- the callable to invoke- Returns:
- the number of distinct (by identity) results found
- Throws:
java.lang.Throwable
- if an exception occurred in one of the invocations
-
-