Package com.saxonica.ee.trans

## Class ThreadManagerEE

- java.lang.Object
- - net.sf.saxon.expr.XPathContextMajor.ThreadManager
  - - com.saxonica.ee.trans.ThreadManagerEE

-     public class ThreadManagerEE
      extends XPathContextMajor.ThreadManager

  The ThreadManager is used to manage asynchronous execution of xsl:result-document instructions in Saxon-EE. It holds an ExecutorService which manages the pool of threads, and allows an exception to be notified if any of the asynchronous threads fails with a run-time error. A ThreadManager is created when an XSLT transformation starts, and is shut down when it ends, which forces the main thread to wait until all asynchronous threads have finished. Executing a try/catch creates a new ThreadManager on the context stack, which is used to manage all xsl:result-document instructions fired off within that try/catch block; the xsl:try waits until it is sure that all such threads have completed, and handles the exception appropriately if any of the threads fails.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ThreadManagerEE​(EnterpriseConfiguration config)` | Create a thread manager.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `CountingCompletionService<Outcome<java.lang.Boolean>>` | `getCompletionService()` | Get the ExecutorService (so that new work can be submitted)
    `void` | `waitForChildThreads()` | Wait for child threads started under the control of this context to finish.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ThreadManagerEE

          public ThreadManagerEE​(EnterpriseConfiguration config)

      Create a thread manager. This initializes an ExecutorService using a fixed thread pool, the number of threads being determined (by default) by the number of available CPUs

  - ### Method Detail

    - #### getCompletionService

          public CountingCompletionService<Outcome<java.lang.Boolean>> getCompletionService()

      Get the ExecutorService (so that new work can be submitted)
      Returns:
        the ExecutorService

    - #### waitForChildThreads

          public void waitForChildThreads()
                                   throws XPathException

      Wait for child threads started under the control of this context to finish. This is called at the end of the (main thread of a) transformation, and also at the end of the "try" part of a try/catch. The threads affected are those used to implement xsl:result-document instructions.
      Specified by:
        `waitForChildThreads` in class `XPathContextMajor.ThreadManager`
      Throws:
        `XPathException` - if any of the child threads have failed with a dynamic error.