Exchanger.Exchange Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя. | Описание |
|---|---|
| Exchange(Object) |
Ожидает, пока другой поток не будет доставлен в эту точку обмена (если текущий поток не прерывается thread#прерывание), а затем передает заданный объект в него, получая его объект в обратном случае. |
| Exchange(Object, Int64, TimeUnit) |
Ожидает прибытия другого потока в эту точку обмена (если текущий поток не прерывается thread#прерывание или указанное время ожидания истекает), а затем передает заданный объект в него, получая его объект в обратном случае. |
Exchange(Object)
Ожидает, пока другой поток не будет доставлен в эту точку обмена (если текущий поток не прерывается thread#прерывание), а затем передает заданный объект в него, получая его объект в обратном случае.
[Android.Runtime.Register("exchange", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_Handler")]
public virtual Java.Lang.Object? Exchange(Java.Lang.Object? x);
[<Android.Runtime.Register("exchange", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_Handler")>]
abstract member Exchange : Java.Lang.Object -> Java.Lang.Object
override this.Exchange : Java.Lang.Object -> Java.Lang.Object
Параметры
- x
- Object
объект для обмена
Возвращаемое значение
объект, предоставленный другим потоком
- Атрибуты
Комментарии
Ожидает, пока другой поток не будет доставлен в эту точку обмена (если текущий поток не прерывается thread#прерывание), а затем передает заданный объект в него, получая его объект в обратном случае.
Если другой поток уже ожидает в точке обмена, он возобновляется в целях планирования потоков и получает объект, переданный текущим потоком. Текущий поток возвращается немедленно, получая объект, переданный в обмен другим потоком.
Если ни один другой поток уже не ожидает обмена, текущий поток отключен для целей планирования потоков и находится в состоянии спячки до тех пор, пока не произойдет одно из двух вещей: <ul><li Некоторые другие потоки вступают в обмен; или <li>>Некоторые другие потоки#прерывания прерывает текущий поток. </ul>
Если текущий поток: <ul><li>имеет свой прерванный статус при входе в этот метод; или <li>является Thread#прерывание при ожидании обмена, /ul>InterruptedException затем возникает, <а состояние прерывания текущего потока очищается.
Документация по Java для java.util.concurrent.Exchanger.exchange(V).
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Применяется к
Exchange(Object, Int64, TimeUnit)
Ожидает прибытия другого потока в эту точку обмена (если текущий поток не прерывается thread#прерывание или указанное время ожидания истекает), а затем передает заданный объект в него, получая его объект в обратном случае.
[Android.Runtime.Register("exchange", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual Java.Lang.Object? Exchange(Java.Lang.Object? x, long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("exchange", "(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;", "GetExchange_Ljava_lang_Object_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member Exchange : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit -> Java.Lang.Object
override this.Exchange : Java.Lang.Object * int64 * Java.Util.Concurrent.TimeUnit -> Java.Lang.Object
Параметры
- x
- Object
объект для обмена
- timeout
- Int64
максимальное время ожидания
- unit
- TimeUnit
единица времени аргумента timeout
Возвращаемое значение
объект, предоставленный другим потоком
- Атрибуты
Комментарии
Ожидает прибытия другого потока в эту точку обмена (если текущий поток не прерывается thread#прерывание или указанное время ожидания истекает), а затем передает заданный объект в него, получая его объект в обратном случае.
Если другой поток уже ожидает в точке обмена, он возобновляется в целях планирования потоков и получает объект, переданный текущим потоком. Текущий поток возвращается немедленно, получая объект, переданный в обмен другим потоком.
Если ни один другой поток уже не ожидает обмена, текущий поток отключен для целей планирования потоков и находится в неактивном состоянии до тех пор, пока не произойдет одно из трех вещей: <ul<>li>Некоторые другие потоки вступают в обмен; или <li Некоторые другие потоки#прерывания текущего потока; или <ли>>указанное время ожидания истекает. </ul>
Если текущий поток: <ul><li>имеет свой прерванный статус при входе в этот метод; или <li>является Thread#прерывание при ожидании обмена, /ul>InterruptedException затем возникает, <а состояние прерывания текущего потока очищается.
Если указанное время ожидания истекает, TimeoutException создается исключение. Если время меньше нуля или равно нулю, метод не будет ждать вообще.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.