Module ojalgo

Class ExternalProcessExecutor


  • public final class ExternalProcessExecutor
    extends java.lang.Object
    Execute submitted tasks/methods in external JVM processes with arbitrary Serializable arguments/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.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.ExecutorService myExecutorService  
    • 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 ExternalProcessExecutor newInstance()  
      static ExternalProcessExecutor newInstance​(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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • myExecutorService

        private final java.util.concurrent.ExecutorService myExecutorService
    • Constructor Detail

      • ExternalProcessExecutor

        ExternalProcessExecutor​(java.util.concurrent.ExecutorService executor)
    • Method Detail

      • 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)
      • 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)