Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AbstractQueuedLongSynchronizer extends AbstractOwnableSynchronizer implements Serializable
AbstractQueuedSynchronizer
в котором состояние синхронизации сохраняется как long. У этого класса есть точно та же самая структура, свойства, и методы как AbstractQueuedSynchronizer за исключением того, что все связанные с состоянием параметры и результаты определяются как long, а не int. Этот класс может быть полезным, создавая синхронизаторы, такие как многоуровневые блокировки и барьеры, которые требуют 64 битов состояния. См. AbstractQueuedSynchronizer
для примечаний использования и примеров.
Модификатор и Тип | Класс и Описание |
---|---|
class |
AbstractQueuedLongSynchronizer.ConditionObject
Реализация условия для a
AbstractQueuedLongSynchronizer служение в качестве основания a Lock реализация. |
Модификатор | Конструктор и Описание |
---|---|
protected |
AbstractQueuedLongSynchronizer()
Создает новый экземпляр AbstractQueuedLongSynchronizer с начальным состоянием синхронизации нуля.
|
Модификатор и Тип | Метод и Описание |
---|---|
void |
acquire(long arg)
Получает в монопольном режиме, игнорируя прерывания.
|
void |
acquireInterruptibly(long arg)
Получает в монопольном режиме, прерываясь если прервано.
|
void |
acquireShared(long arg)
Получает в совместно используемом режиме, игнорируя прерывания.
|
void |
acquireSharedInterruptibly(long arg)
Получает в совместно используемом режиме, прерываясь если прервано.
|
protected boolean |
compareAndSetState(long expect, long update)
Атомарно синхронизация наборов утверждает к данному обновленному значению, если значение текущего состояния равняется математическому ожиданию.
|
Collection<Thread> |
getExclusiveQueuedThreads()
Возвращает набор, содержащий потоки, которые могут ожидать, чтобы получить в монопольном режиме.
|
Поток |
getFirstQueuedThread()
Возвращает первый (дольше всего ожидающий) поток в очереди, или
null если никакие потоки в настоящий момент не ставятся в очередь. |
Collection<Thread> |
getQueuedThreads()
Возвращает набор, содержащий потоки, которые могут ожидать, чтобы получить.
|
int |
getQueueLength()
Возвращает оценку числа потоков, ожидающих, чтобы получить.
|
Collection<Thread> |
getSharedQueuedThreads()
Возвращает набор, содержащий потоки, которые могут ожидать, чтобы получить в совместно используемом режиме.
|
protected long |
getState()
Возвращает текущую стоимость состояния синхронизации.
|
Collection<Thread> |
getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
Возвращает набор, содержащий те потоки, которые могут ожидать на данном условии, связанном с этим синхронизатором.
|
int |
getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
Возвращает оценку числа потоков, ожидающих на данном условии, связанном с этим синхронизатором.
|
boolean |
hasContended()
Запросы, спорили ли какие-либо потоки когда-либо, чтобы получить этот синхронизатор; это - то, если получать метод когда-либо блокировал.
|
boolean |
hasQueuedPredecessors()
Запросы, ожидали ли какие-либо потоки, чтобы получить дольше чем текущий поток.
|
boolean |
hasQueuedThreads()
Запросы, ожидают ли какие-либо потоки, чтобы получить.
|
boolean |
hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
Запросы, ожидают ли какие-либо потоки на данном условии, связанном с этим синхронизатором.
|
protected boolean |
isHeldExclusively()
Возвраты
true если синхронизация считается исключительно относительно текущего (вызов) потоком. |
boolean |
isQueued(Thread thread)
Возвращает true, если данный поток в настоящий момент ставится в очередь.
|
boolean |
owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
Запросы, использует ли данный ConditionObject этот синхронизатор в качестве своей блокировки.
|
boolean |
release(long arg)
Выпуски в монопольном режиме.
|
boolean |
releaseShared(long arg)
Выпуски в совместно используемом режиме.
|
protected void |
setState(long newState)
Устанавливает значение состояния синхронизации.
|
Строка |
toString()
Возвращает строку, идентифицирующую этот синхронизатор, так же как его состояние.
|
protected boolean |
tryAcquire(long arg)
Попытки получить в монопольном режиме.
|
boolean |
tryAcquireNanos(long arg, long nanosTimeout)
Попытки получить в монопольном режиме, прерываясь если прервано, и перестав работать, если данный тайм-аут протекает.
|
protected long |
tryAcquireShared(long arg)
Попытки получить в совместно используемом режиме.
|
boolean |
tryAcquireSharedNanos(long arg, long nanosTimeout)
Попытки получить в совместно используемом режиме, прерываясь если прервано, и перестав работать, если данный тайм-аут протекает.
|
protected boolean |
tryRelease(long arg)
Попытки установить состояние, чтобы отразить выпуск в монопольном режиме.
|
protected boolean |
tryReleaseShared(long arg)
Попытки установить состояние, чтобы отразить выпуск в совместно используемом режиме.
|
getExclusiveOwnerThread, setExclusiveOwnerThread
protected AbstractQueuedLongSynchronizer()
protected final long getState()
protected final void setState(long newState)
newState
- новое значение состоянияprotected final boolean compareAndSetState(long expect, long update)
expect
- математическое ожиданиеupdate
- новое значениеprotected boolean tryAcquire(long arg)
Этот метод всегда вызывается выполнением потока, получают. Если этот отказ отчетов метода, получать метод может поставить поток в очередь, если это уже не ставится в очередь, пока это не сообщается выпуском от некоторого другого потока. Это может использоваться, чтобы реализовать метод Lock.tryLock()
.
Броски реализации по умолчанию UnsupportedOperationException
.
arg
- получать параметр. Это значение всегда является тем, которое передают к получать методу, или является значением, на котором экономят, запись в условие ожидает. Значение иначе неинтерпретируется и может представить что-либо, что Вы любите.true
в случае успеха. На успех был получен этот объект.IllegalMonitorStateException
- если получение поместило бы этот синхронизатор в недопустимое состояние. Это исключение должно быть выдано непротиворечивым способом для синхронизации, чтобы работать правильно.UnsupportedOperationException
- если монопольный режим не поддерживаетсяprotected boolean tryRelease(long arg)
Этот метод всегда вызывается выпуском выполнения потока.
Броски реализации по умолчанию UnsupportedOperationException
.
arg
- параметр выпуска. Это значение всегда является тем, которое передают к методу выпуска, или значение текущего состояния после записи в условие ожидает. Значение иначе неинтерпретируется и может представить что-либо, что Вы любите.true
если этот объект находится теперь в полностью выпущенном состоянии, так, чтобы любые потоки ожидания могли попытаться получить; и false
иначе.IllegalMonitorStateException
- если выпуск поместил бы этот синхронизатор в недопустимое состояние. Это исключение должно быть выдано непротиворечивым способом для синхронизации, чтобы работать правильно.UnsupportedOperationException
- если монопольный режим не поддерживаетсяprotected long tryAcquireShared(long arg)
Этот метод всегда вызывается выполнением потока, получают. Если этот отказ отчетов метода, получать метод может поставить поток в очередь, если это уже не ставится в очередь, пока это не сообщается выпуском от некоторого другого потока.
Броски реализации по умолчанию UnsupportedOperationException
.
arg
- получать параметр. Это значение всегда является тем, которое передают к получать методу, или является значением, на котором экономят, запись в условие ожидает. Значение иначе неинтерпретируется и может представить что-либо, что Вы любите.IllegalMonitorStateException
- если получение поместило бы этот синхронизатор в недопустимое состояние. Это исключение должно быть выдано непротиворечивым способом для синхронизации, чтобы работать правильно.UnsupportedOperationException
- если совместно использованный режим не поддерживаетсяprotected boolean tryReleaseShared(long arg)
Этот метод всегда вызывается выпуском выполнения потока.
Броски реализации по умолчанию UnsupportedOperationException
.
arg
- параметр выпуска. Это значение всегда является тем, которое передают к методу выпуска, или значение текущего состояния после записи в условие ожидает. Значение иначе неинтерпретируется и может представить что-либо, что Вы любите.true
если этот выпуск совместно используемого режима может разрешить, чтобы ожидание получило (совместно использованный или монопольный), чтобы успешно выполниться; и false
иначеIllegalMonitorStateException
- если выпуск поместил бы этот синхронизатор в недопустимое состояние. Это исключение должно быть выдано непротиворечивым способом для синхронизации, чтобы работать правильно.UnsupportedOperationException
- если совместно использованный режим не поддерживаетсяprotected boolean isHeldExclusively()
true
если синхронизация считается исключительно относительно текущего (вызов) потоком. Этот метод вызывается на каждый звонок в неожидание AbstractQueuedLongSynchronizer.ConditionObject
метод. (Ожидающие методы вместо этого вызывают release(long)
.) Броски реализации по умолчанию UnsupportedOperationException
. Этот метод вызывается внутренне только в пределах AbstractQueuedLongSynchronizer.ConditionObject
методы, так не должен быть определен, если условия не используются.
true
если синхронизация сохранена исключительно; false
иначеUnsupportedOperationException
- если условия не поддерживаютсяpublic final void acquire(long arg)
tryAcquire(long)
, возврат на успехе. Иначе поток ставится в очередь, возможно неоднократно блокируя и разблокируя, вызывая tryAcquire(long)
до успеха. Этот метод может использоваться, чтобы реализовать метод Lock.lock()
.arg
- получать параметр. Это значение передается tryAcquire(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.public final void acquireInterruptibly(long arg) throws InterruptedException
tryAcquire(long)
, возврат на успехе. Иначе поток ставится в очередь, возможно неоднократно блокируя и разблокируя, вызывая tryAcquire(long)
до успеха или потока прерывается. Этот метод может использоваться, чтобы реализовать метод Lock.lockInterruptibly()
.arg
- получать параметр. Это значение передается tryAcquire(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.InterruptedException
- если текущий поток прерываетсяpublic final boolean tryAcquireNanos(long arg, long nanosTimeout) throws InterruptedException
tryAcquire(long)
, возврат на успехе. Иначе, поток ставится в очередь, возможно неоднократно блокируя и разблокируя, вызывая tryAcquire(long)
до успеха или потока прерывается, или тайм-аут протекает. Этот метод может использоваться, чтобы реализовать метод Lock.tryLock(long, TimeUnit)
.arg
- получать параметр. Это значение передается tryAcquire(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.nanosTimeout
- максимальное количество наносекунд, чтобы ожидатьtrue
если получено; false
если синхронизированныйInterruptedException
- если текущий поток прерываетсяpublic final boolean release(long arg)
tryRelease(long)
возвращает true. Этот метод может использоваться, чтобы реализовать метод Lock.unlock()
.arg
- параметр выпуска. Это значение передается tryRelease(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.tryRelease(long)
public final void acquireShared(long arg)
tryAcquireShared(long)
, возврат на успехе. Иначе поток ставится в очередь, возможно неоднократно блокируя и разблокируя, вызывая tryAcquireShared(long)
до успеха.arg
- получать параметр. Это значение передается tryAcquireShared(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.public final void acquireSharedInterruptibly(long arg) throws InterruptedException
tryAcquireShared(long)
, возврат на успехе. Иначе поток ставится в очередь, возможно неоднократно блокируя и разблокируя, вызывая tryAcquireShared(long)
до успеха или потока прерывается.arg
- получать параметр Это значение передается tryAcquireShared(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.InterruptedException
- если текущий поток прерываетсяpublic final boolean tryAcquireSharedNanos(long arg, long nanosTimeout) throws InterruptedException
tryAcquireShared(long)
, возврат на успехе. Иначе, поток ставится в очередь, возможно неоднократно блокируя и разблокируя, вызывая tryAcquireShared(long)
до успеха или потока прерывается, или тайм-аут протекает.arg
- получать параметр. Это значение передается tryAcquireShared(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.nanosTimeout
- максимальное количество наносекунд, чтобы ожидатьtrue
если получено; false
если синхронизированныйInterruptedException
- если текущий поток прерываетсяpublic final boolean releaseShared(long arg)
tryReleaseShared(long)
возвращает true.arg
- параметр выпуска. Это значение передается tryReleaseShared(long)
но иначе неинтерпретируется и может представить что-либо, что Вы любите.tryReleaseShared(long)
public final boolean hasQueuedThreads()
true
возврат не гарантирует, что любой другой поток будет когда-либо получать. В этой реализации эта работа возвращается в постоянное время.
true
если могут быть другие потоки, ожидающие, чтобы получитьpublic final boolean hasContended()
В этой реализации эта работа возвращается в постоянное время.
true
если когда-либо была конкуренцияpublic final Thread getFirstQueuedThread()
null
если никакие потоки в настоящий момент не ставятся в очередь. В этой реализации эта работа обычно возвращается в постоянное время, но может выполнить итерации на конкуренцию, если другие потоки одновременно изменяют очередь.
null
если никакие потоки в настоящий момент не ставятся в очередьpublic final boolean isQueued(Thread thread)
Эта реализация пересекает очередь, чтобы определить присутствие данного потока.
thread
- потокtrue
если данный поток находится на очередиNullPointerException
- если поток является нулемpublic final boolean hasQueuedPredecessors()
Вызов этого метода эквивалентен (но может быть более эффективным чем):
getFirstQueuedThread() != Thread.currentThread() &&
hasQueuedThreads()
Отметьте это, потому что отмены из-за прерываний и тайм-аутов могут произойти в любое время, a true
возврат не гарантирует, что некоторый другой поток получит перед текущим потоком. Аналогично, для другого потока возможно выиграть гонки, чтобы ставить в очередь после того, как этот метод возвратился false
, из-за очереди, являющейся пустым.
Этот метод разрабатывается, чтобы использоваться справедливым синхронизатором, чтобы избежать неуклюже передвигаться. Такой синхронизатор tryAcquire(long)
метод должен возвратиться false
, и tryAcquireShared(long)
метод должен возвратить отрицательную величину, если этот метод возвращается true
(если это не повторно используемое, получают). Например, tryAcquire
метод для справедливого, повторно используемого, монопольного синхронизатора режима мог бы быть похожим на это:
protected boolean tryAcquire(int arg) {
if (isHeldExclusively()) {
// A reentrant acquire; increment hold count
return true;
} else if (hasQueuedPredecessors()) {
return false;
} else {
// try to acquire normally
}
}
true
если есть поток с очередями, предшествующий текущему потоку, и false
если текущий поток во главе очереди, или очередь пустаpublic final int getQueueLength()
public final Collection<Thread> getQueuedThreads()
public final Collection<Thread> getExclusiveQueuedThreads()
getQueuedThreads()
за исключением того, что это только возвращается, те потоки, ожидающие из-за монопольного, получают.public final Collection<Thread> getSharedQueuedThreads()
getQueuedThreads()
за исключением того, что это только возвращается, те потоки, ожидающие из-за совместно используемого, получают.public String toString()
"State ="
сопровождаемый текущей стоимостью getState()
, и также "nonempty"
или "empty"
в зависимости от того, пуста ли очередь.public final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition
- условиеNullPointerException
- если условие является нулемpublic final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition
- условиеIllegalMonitorStateException
- если монопольная синхронизация не сохраненаIllegalArgumentException
- если данное условие не связывается с этим синхронизаторомNullPointerException
- если условие является нулемpublic final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition
- условиеIllegalMonitorStateException
- если монопольная синхронизация не сохраненаIllegalArgumentException
- если данное условие не связывается с этим синхронизаторомNullPointerException
- если условие является нулемpublic final Collection<Thread> getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition
- условиеIllegalMonitorStateException
- если монопольная синхронизация не сохраненаIllegalArgumentException
- если данное условие не связывается с этим синхронизаторомNullPointerException
- если условие является нулем
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.