com.saxonica.expr.ee

## Class MultithreadedForEach

- java.lang.Object
- - net.sf.saxon.expr.Expression
  - - net.sf.saxon.expr.instruct.Instruction
    - - net.sf.saxon.expr.instruct.ForEach
      - - com.saxonica.expr.ee.MultithreadedForEach

- All Implemented Interfaces:
    Serializable, SourceLocator, LocationProvider, SaxonLocator, ContextMappingFunction<Item>, ContextSwitchingExpression, TailCallReturner, InstructionInfo, Locator

      public class MultithreadedForEach
      extends ForEach

  This instruction represents an xsl:for-each instruction using more than one thread
  See Also:
    Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `MultithreadedForEach.MyRejectedExecutionHandelerImpl` Handles exceptions thrown in the thread pool manager

  - ### Field Summary

    - ### Fields inherited from class net.sf.saxon.expr.instruct.ForEach

      `action, containsTailCall, select, threads`

    - ### Fields inherited from class net.sf.saxon.expr.Expression

      `EFFECTIVE_BOOLEAN_VALUE, EVALUATE_METHOD, EVENT_FEED_METHOD, INHERITED_CONTEXT, INSPECTION_CONTEXT, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, MAX_SEQUENCE_LENGTH, MAX_STRING_LENGTH, NAVIGATION_CONTEXT, NODE_VALUE_CONTEXT, PROCESS_METHOD, PUSH_SELECTION, staticProperties, UNBOUNDED_LOWER, UNBOUNDED_UPPER, W3C_CONSUMING, W3C_FREE_RANGING, W3C_GROUP_CONSUMING, W3C_MOTIONLESS, WATCH_METHOD`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultithreadedForEach(Expression select, Expression action, boolean containsTailCall, Expression threads)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Expression` | `copy()` Copy an expression.
    `protected void` | `explainThreads(ExpressionPresenter out)` Add the value of the saxon:threads attribute to the explain output
    `ExpressionCompiler` | `getExpressionCompiler()` Return the compiler of the MultithreadedForEach expression
    `int` | `getImplementationMethod()` An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process().
    `SequenceIterator` | `iterate(XPathContext context)` Return an Iterator to iterate over the values of the sequence.
    `TailCall` | `processLeavingTail(XPathContext context)` ProcessLeavingTail: called to do the real work of this instruction.
    `void` | `shutdown()`

    - ### Methods inherited from class net.sf.saxon.expr.instruct.ForEach

      `addToPathMap, checkPermittedContents, computeDependencies, computeSpecialProperties, createsNewNodes, explain, getActionExpression, getControlledExpression, getControllingExpression, getInstructionNameCode, getItemType, getNumberOfThreadsExpression, getSelectExpression, getStreamability, getStreamingAdjunct, iterateSubExpressionInfo, iterateSubExpressions, map, optimize, promoteInst, replaceSubExpression, setActionExpression, setSelectExpression, simplify, toString, typeCheck`

    - ### Methods inherited from class net.sf.saxon.expr.instruct.Instruction

      `assembleParams, assembleTunnelParams, computeCardinality, dynamicError, evaluateAsString, evaluateItem, getConstructType, getExpressionName, getInstructionName, getIteratorFromProcessMethod, getSourceLocator, isXSLT, process, promote`

    - ### Methods inherited from class net.sf.saxon.expr.Expression

      `adoptChildExpression, checkForUpdatingSubexpressions, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, evaluatePendingUpdates, explain, getCardinality, getColumnNumber, getColumnNumber, getContainer, getDependencies, getEvaluationMethod, getExecutable, getHostLanguage, getIntegerBounds, getIntrinsicDependencies, getLineNumber, getLineNumber, getLocationId, getLocationProvider, getObjectName, getProperties, getProperty, getPublicId, getSlotsUsed, getSpecialProperties, getSystemId, getSystemId, hasVariableBinding, implementsStaticTypeCheck, isSubtreeExpression, isUpdatingExpression, isVacuousExpression, iterateEvents, markTailFunctionCalls, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toPattern, toStreamingPattern, typeError`

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

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

    - ### Methods inherited from interface javax.xml.transform.SourceLocator

      `getColumnNumber, getLineNumber, getPublicId, getSystemId`

- - ### Constructor Detail

    - #### MultithreadedForEach

          public MultithreadedForEach(Expression select,
                              Expression action,
                              boolean containsTailCall,
                              Expression threads)

  - ### Method Detail

    - #### copy

          public Expression copy()

      Copy an expression. This makes a deep copy.
      Overrides:
        `copy` in class `ForEach`
      Returns:
        the copy of the original expression

    - #### getImplementationMethod

          public int getImplementationMethod()

      An implementation of Expression must provide at least one of the methods evaluateItem(), iterate(), or process(). This method indicates which of these methods is provided. This implementation provides only the process() method natively.
      Overrides:
        `getImplementationMethod` in class `ForEach`
      Returns:
        the implementation method, for example `Expression.ITERATE_METHOD` or `Expression.EVALUATE_METHOD` or `Expression.PROCESS_METHOD`

    - #### processLeavingTail

          public TailCall processLeavingTail(XPathContext context)
                                      throws XPathException

      Description copied from class: `Instruction`
      ProcessLeavingTail: called to do the real work of this instruction. This method must be implemented in each subclass. The results of the instruction are written to the current Receiver, which can be obtained via the Controller.
      Specified by:
        `processLeavingTail` in interface `TailCallReturner`
      Overrides:
        `processLeavingTail` in class `ForEach`
      Parameters:
        `context` - The dynamic context of the transformation, giving access to the current node, the current variables, etc.
      Returns:
        null if the instruction has completed execution; or a TailCall indicating a function call or template call that is delegated to the caller, to be made after the stack has been unwound so as to save stack space.
      Throws:
        `XPathException` - if a dynamic error occurs during the evaluation of the instruction

    - #### iterate

          public SequenceIterator iterate(XPathContext context)
                                   throws XPathException

      Return an Iterator to iterate over the values of the sequence.
      Overrides:
        `iterate` in class `ForEach`
      Parameters:
        `context` - supplies the context for evaluation
      Returns:
        a SequenceIterator that can be used to iterate over the result of the expression
      Throws:
        `XPathException` - if any dynamic error occurs evaluating the expression

    - #### shutdown

          public void shutdown()

    - #### getExpressionCompiler

          public ExpressionCompiler getExpressionCompiler()

      Return the compiler of the MultithreadedForEach expression
      Overrides:
        `getExpressionCompiler` in class `ForEach`
      Returns:
        the relevant ExpressionCompiler

    - #### explainThreads

          protected void explainThreads(ExpressionPresenter out)

      Add the value of the saxon:threads attribute to the explain output
      Overrides:
        `explainThreads` in class `ForEach`
      Parameters:
        `out` - the destination for explain output

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.