# Class MessagePasser<K,V>

java.lang.Object
org.apfloat.internal.MessagePasser<K,V>

Type Parameters:
  `K` - The receiver type for this message passer.
  `V` - The message type for this message passer.

public class MessagePasser<K,V> extends Object
Message passing helper class for parallel codes. The message passer can hold one message for each receiver. This class is safe for concurrent use from multiple threads.

Since:
  1.6
Version:
  1.15.0
Author:
  Mikko Tommila

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MessagePasser()`
  Default constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `V`
  `getMessage(K receiver)`
  Get a message if one is available.
  `V`
  `receiveMessage(K receiver)`
  Receive a message.
  `void`
  `sendMessage(K receiver, V message)`
  Send a message.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### MessagePasser

    public MessagePasser()
    Default constructor.

- ## Method Details

  - ### sendMessage

    public void sendMessage(K receiver, V message)
    Send a message.
    Parameters:
      `receiver` - The receiver.
      `message` - The message. Must not be `null`.

  - ### getMessage

    public V getMessage(K receiver)
    Get a message if one is available. This method will not block.
    Parameters:
      `receiver` - The receiver.
    Returns:
      The message, or `null` if none is available.

  - ### receiveMessage

    public V receiveMessage(K receiver) throws ApfloatRuntimeException
    Receive a message. This method will block until a message is available.
    Parameters:
      `receiver` - The receiver.
    Returns:
      The message.
    Throws:
      `ApfloatRuntimeException`