Exchanger Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares.
[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
- Herencia
- Atributos
Comentarios
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. Cada subproceso presenta algún objeto en la entrada al #exchange exchange método , coincide con un subproceso de asociado y recibe el objeto del asociado a la devolución. Un Exchanger puede verse como una forma bidireccional de .SynchronousQueue Los exchangers pueden ser útiles en aplicaciones como algoritmos genéticos y diseños de canalización.
<b>Uso de ejemplo:</b> Estos son los aspectos destacados de una clase que usa para Exchanger intercambiar búferes entre subprocesos para que el subproceso que rellena el búfer obtenga uno recién vacío cuando lo necesite, entregando el rellenado al subproceso vacíando el búfer.
{@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();
}
}}
Efectos de coherencia de memoria: para cada par de subprocesos que intercambian correctamente los objetos a través de , Exchangeracciones anteriores a exchange() en cada subproceso <que>se producen antes</i> de los posteriores a una devolución del correspondiente exchange() en el otro subproceso.
Agregado en 1.5.
Java documentación para java.util.concurrent.Exchanger.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Constructores
| Nombre | Description |
|---|---|
| Exchanger() |
Crea un nuevo Exchanger. |
| Exchanger(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
Propiedades
| Nombre | Description |
|---|---|
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| JniPeerMembers |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
| Nombre | Description |
|---|---|
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| Equals(Object) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| Exchange(Object, Int64, TimeUnit) |
Espera a que otro subproceso llegue a este punto de intercambio (a menos que se interrumpa el subproceso actual o se interrumpa el tiempo de espera especificado) y, a continuación, transfiere el objeto especificado a él, recibiendo su objeto a cambio. |
| Exchange(Object) |
Espera a que otro subproceso llegue a este punto de intercambio (a menos que se interrumpa el subproceso actual) y, a continuación, transfiere el objeto especificado a él, recibiendo su objeto a cambio. |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. (Heredado de JavaObject) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Punto de sincronización en el que los subprocesos pueden emparejar y intercambiar elementos dentro de pares. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |