Язык

Exchanger Класс

Определение

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

[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
Наследование
Атрибуты

Комментарии

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах. Каждый поток представляет некоторый объект при входе в #exchange exchange метод, соответствует потоку партнера и получает объект партнера по возвращении. Exchanger может рассматриваться как двунаправленная форма SynchronousQueue. Exchangers могут быть полезны в таких приложениях, как генетические алгоритмы и проекты конвейеров.

<b>Пример использования:</b> Ниже приведены основные моменты класса, который использует Exchanger буферы для замены буферов между потоками, чтобы поток заполнял буфер свеже пустой, когда он нужен, передавая заполненный один потоку, пустому буферу.

{@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();
              }
            }}

Эффекты согласованности памяти: для каждой пары потоков, которые успешно обмениваются объектами с помощью Exchangerдействия, exchange() предшествующие каждому потоку, который происходит<>< перед каждым потоком>, последующим возвратом из соответствующего exchange() в другом потоке.

Добавлено в версии 1.5.

Java документации по java.util.concurrent.Exchanger.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Конструкторы

Имя. Описание
Exchanger()

Создает новый exchanger.

Exchanger(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Имя. Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
JniPeerMembers

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

Имя. Описание
Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
Equals(Object)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
Exchange(Object, Int64, TimeUnit)

Ожидает прибытия другого потока в эту точку обмена (если текущий поток не прерывается thread#прерывание или указанное время ожидания истекает), а затем передает заданный объект в него, получая его объект в обратном случае.

Exchange(Object)

Ожидает, пока другой поток не будет доставлен в эту точку обмена (если текущий поток не прерывается thread#прерывание), а затем передает заданный объект в него, получая его объект в обратном случае.

GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
JavaFinalize()
Устаревшие.

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

Имя. Описание
IJavaPeerable.Disposed()

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

(Унаследовано от JavaObject)

Методы расширения

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к