- java.lang.Object
-
- org.ojalgo.concurrent.ExternalProcessExecutor
-
public final class ExternalProcessExecutor extends java.lang.ObjectExecute submitted tasks/methods in external JVM processes with arbitrarySerializablearguments/return. Provides hard cancellation/timeout via process kill. Each executor thread owns a persistent child process kept alive across tasks until the owner thread is interrupted or the process is killed due to failure/timeout. This enables reusing JVM warm state for a sequence of tasks.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classExternalProcessExecutor.IPCInter-Process Communication(package private) static classExternalProcessExecutor.ProcessRequest(package private) static classExternalProcessExecutor.ProcessResponseprivate static classExternalProcessExecutor.ProcessTask<T>private static classExternalProcessExecutor.RingBufferOutputRing buffer OutputStream that retains only the last N bytes written.private static classExternalProcessExecutor.WorkerChannelA per-thread, persistent channel to a child JVM.
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ExecutorServicemyExecutorService
-
Constructor Summary
Constructors Constructor Description ExternalProcessExecutor(java.util.concurrent.ExecutorService executor)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description <T,C extends java.util.concurrent.Callable<T> & java.io.Serializable>
java.util.concurrent.Future<T>call(C callable)<T,C extends java.util.concurrent.Callable<T> & java.io.Serializable>
java.util.concurrent.Future<T>call(C callable, ProcessOptions options)<T> java.util.concurrent.Future<T>execute(java.lang.Class<?> owner, java.lang.String name, java.lang.Class<?>[] parameters, java.lang.Object... arguments)<T> java.util.concurrent.Future<T>execute(java.lang.Class<?> owner, java.lang.String name, java.lang.Class<?>[] parameters, ProcessOptions options, java.lang.Object... arguments)<T> java.util.concurrent.Future<T>execute(java.lang.reflect.Method method, java.lang.Object... arguments)<T> java.util.concurrent.Future<T>execute(java.lang.reflect.Method method, ProcessOptions options, java.lang.Object... arguments)<T> java.util.concurrent.Future<T>execute(MethodDescriptor method, java.lang.Object... arguments)<T> java.util.concurrent.Future<T>execute(MethodDescriptor method, ProcessOptions options, java.lang.Object... arguments)static ExternalProcessExecutornewInstance()static ExternalProcessExecutornewInstance(int nThreads)Create an executor backed by a fixed-size pool.<R extends java.lang.Runnable & java.io.Serializable>
java.util.concurrent.Future<java.lang.Void>run(R runnable)<R extends java.lang.Runnable & java.io.Serializable>
java.util.concurrent.Future<java.lang.Void>run(R runnable, ProcessOptions options)
-
-
-
Method Detail
-
newInstance
public static ExternalProcessExecutor newInstance()
-
newInstance
public static ExternalProcessExecutor newInstance(int nThreads)
Create an executor backed by a fixed-size pool. The pool size effectively caps the number of persistent worker processes running concurrently.
-
call
public <T,C extends java.util.concurrent.Callable<T> & java.io.Serializable> java.util.concurrent.Future<T> call(C callable)
-
call
public <T,C extends java.util.concurrent.Callable<T> & java.io.Serializable> java.util.concurrent.Future<T> call(C callable, ProcessOptions options)
-
execute
public <T> java.util.concurrent.Future<T> execute(java.lang.Class<?> owner, java.lang.String name, java.lang.Class<?>[] parameters, java.lang.Object... arguments)
-
execute
public <T> java.util.concurrent.Future<T> execute(java.lang.Class<?> owner, java.lang.String name, java.lang.Class<?>[] parameters, ProcessOptions options, java.lang.Object... arguments)
-
execute
public <T> java.util.concurrent.Future<T> execute(java.lang.reflect.Method method, java.lang.Object... arguments)
-
execute
public <T> java.util.concurrent.Future<T> execute(java.lang.reflect.Method method, ProcessOptions options, java.lang.Object... arguments)
-
execute
public <T> java.util.concurrent.Future<T> execute(MethodDescriptor method, java.lang.Object... arguments)
-
execute
public <T> java.util.concurrent.Future<T> execute(MethodDescriptor method, ProcessOptions options, java.lang.Object... arguments)
-
run
public <R extends java.lang.Runnable & java.io.Serializable> java.util.concurrent.Future<java.lang.Void> run(R runnable)
-
run
public <R extends java.lang.Runnable & java.io.Serializable> java.util.concurrent.Future<java.lang.Void> run(R runnable, ProcessOptions options)
-
-