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 |
Возвращает класс среды выполнения этого |
| 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 типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Точка синхронизации, в которой потоки могут связывать и переключать элементы в парах. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |