Package org.optaplanner.core.impl.partitionedsearch.queue

## Class PartitionQueue<Solution_>

- java.lang.Object
- - org.optaplanner.core.impl.partitionedsearch.queue.PartitionQueue<Solution_>

- Type Parameters:
    `Solution_` - the solution type, the class with the `PlanningSolution` annotation
  All Implemented Interfaces:
    `Iterable<PartitionChangeMove<Solution_>>`

      public class PartitionQueue<Solution_>
      extends Object
      implements Iterable<PartitionChangeMove<Solution_>>

  This class is thread-safe.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected org.slf4j.Logger` | `logger` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PartitionQueue​(int partCount)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addExceptionThrown​(int partIndex, Throwable throwable)` | This method is thread-safe.
    `void` | `addFinish​(int partIndex, long partCalculationCount)` | This method is thread-safe.
    `void` | `addMove​(int partIndex, PartitionChangeMove<Solution_> move)` | This method is thread-safe.
    `long` | `getPartsCalculationCount()` |
    `Iterator<PartitionChangeMove<Solution_>>` | `iterator()` |

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

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

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Field Detail

    - #### logger

          protected final transient org.slf4j.Logger logger

  - ### Constructor Detail

    - #### PartitionQueue

          public PartitionQueue​(int partCount)

  - ### Method Detail

    - #### addMove

          public void addMove​(int partIndex,
                              PartitionChangeMove<Solution_> move)

      This method is thread-safe. The previous move(s) for this partIndex (if it hasn't been consumed yet), will be skipped during iteration.
      Parameters:
        `partIndex` - `0 <= partIndex < partCount`
        `move` - never null
      See Also:
        `BlockingQueue.add(Object)`

    - #### addFinish

          public void addFinish​(int partIndex,
                                long partCalculationCount)

      This method is thread-safe. The previous move for this partIndex (that haven't been consumed yet), will still be returned during iteration.
      Parameters:
        `partIndex` - `0 <= partIndex < partCount`
        `partCalculationCount` - at least 0
      See Also:
        `BlockingQueue.add(Object)`

    - #### addExceptionThrown

          public void addExceptionThrown​(int partIndex,
                                         Throwable throwable)

      This method is thread-safe. The previous move for this partIndex (if it hasn't been consumed yet), will still be returned during iteration before the iteration throws an exception.
      Parameters:
        `partIndex` - `0 <= partIndex < partCount`
        `throwable` - never null
      See Also:
        `BlockingQueue.add(Object)`

    - #### iterator

          public Iterator<PartitionChangeMove<Solution_>> iterator()

      Specified by:
        `iterator` in interface `Iterable<Solution_>`

    - #### getPartsCalculationCount

          public long getPartsCalculationCount()