Langage

Exchanger Classe

Définition

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

[Android.Runtime.Register("java/util/concurrent/Exchanger", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class Exchanger : Java.Lang.Object
[<Android.Runtime.Register("java/util/concurrent/Exchanger", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type Exchanger = class
    inherit Object
Héritage
Attributs

Remarques

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires. Chaque thread présente un objet lors de l’entrée à la #exchange exchange méthode, correspond à un thread partenaire et reçoit l’objet de son partenaire lors du retour. Un exchanger peut être considéré comme une forme bidirectionnelle d’un SynchronousQueue. Les exchangeurs peuvent être utiles dans les applications telles que les algorithmes génétiques et les conceptions de pipeline.

<b>Exemple d’utilisation :</b> Voici les points forts d’une classe qui utilise un Exchanger pour échanger des mémoires tampons entre des threads afin que le thread remplissant la mémoire tampon obtienne une mémoire tampon fraîchement vidée lorsqu’elle en a besoin, en laissant le thread rempli vider la mémoire tampon.

{@code
            class FillAndEmpty {
              Exchanger<DataBuffer> exchanger = new Exchanger<>();
              DataBuffer initialEmptyBuffer = ...; // a made-up type
              DataBuffer initialFullBuffer = ...;

              class FillingLoop implements Runnable {
                public void run() {
                  DataBuffer currentBuffer = initialEmptyBuffer;
                  try {
                    while (currentBuffer != null) {
                      addToBuffer(currentBuffer);
                      if (currentBuffer.isFull())
                        currentBuffer = exchanger.exchange(currentBuffer);
                    }
                  } catch (InterruptedException ex) { ... handle ...}
                }
              }

              class EmptyingLoop implements Runnable {
                public void run() {
                  DataBuffer currentBuffer = initialFullBuffer;
                  try {
                    while (currentBuffer != null) {
                      takeFromBuffer(currentBuffer);
                      if (currentBuffer.isEmpty())
                        currentBuffer = exchanger.exchange(currentBuffer);
                    }
                  } catch (InterruptedException ex) { ... handle ...}
                }
              }

              void start() {
                new Thread(new FillingLoop()).start();
                new Thread(new EmptyingLoop()).start();
              }
            }}

Effets de cohérence de la mémoire : pour chaque paire de threads qui échangent avec succès des objets via un Exchanger, actions avant chaque exchange() thread <i>se produit-before</i> ceux qui suivent un retour de l’autre thread correspondant exchange() dans l’autre thread.

Ajouté à la version 1.5.

Java documentation pour java.util.concurrent.Exchanger.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Constructeurs

Nom Description
Exchanger()

Crée un exchanger.

Exchanger(IntPtr, JniHandleOwnership)

Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime.

Propriétés

Nom Description
Class

Retourne la classe runtime de ce Object.

(Hérité de Object)
Handle

Handle de l’instance Android sous-jacente.

(Hérité de Object)
JniIdentityHashCode

Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité.

(Hérité de Object)
JniManagedPeerState

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
JniPeerMembers

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

PeerReference

Obtient la référence d’objet JNI pour cet homologue Java.

(Hérité de Object)
ThresholdClass

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

ThresholdType

Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code.

Méthodes

Nom Description
Clone()

Crée et retourne une copie de cet objet.

(Hérité de Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
Dispose()

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
Dispose(Boolean)

Libère les ressources détenues par cet homologue Java.

(Hérité de Object)
DisposeUnlessReferenced()

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
Equals(Object)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
Equals(Object)

Indique si un autre objet est « égal à » celui-ci.

(Hérité de Object)
Exchange(Object, Int64, TimeUnit)

Attend qu’un autre thread arrive à ce point d’échange (sauf si le thread actuel est interrompu thread#interruption ou que le temps d’attente spécifié s’écoule), puis transfère l’objet donné à celui-ci, en recevant son objet en retour.

Exchange(Object)

Attend qu’un autre thread arrive à ce point d’échange (sauf si le thread actuel est interrompu thread#interruption), puis transfère l’objet donné à celui-ci, recevant son objet en retour.

GetHashCode()

Retourne une valeur de code de hachage pour l’objet.

(Hérité de Object)
JavaFinalize()

Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet.

(Hérité de Object)
Notify()

Réveille un thread unique qui attend le moniteur de cet objet.

(Hérité de Object)
NotifyAll()

Réveille tous les threads qui attendent le moniteur de cet objet.

(Hérité de Object)
SetHandle(IntPtr, JniHandleOwnership)

Définit la propriété Handle.

(Hérité de Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
ToArray<T>()

Crée un tableau managé à partir de ce wrapper de tableau Java.

(Hérité de Object)
ToString()

Retourne une représentation sous forme de chaîne de l’objet.

(Hérité de Object)
UnregisterFromRuntime()

Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité.

(Hérité de Object)
Wait()

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<>

(Hérité de Object)
Wait(Int64, Int32)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)
Wait(Int64)

Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée.

(Hérité de Object)

Implémentations d’interfaces explicites

Nom Description
IJavaPeerable.Disposed()

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
IJavaPeerable.Finalized()

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

(Hérité de JavaObject)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Point de synchronisation auquel les threads peuvent associer et échanger des éléments au sein de paires.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à