Операционная среда этого руководства: система Windows 7, версия Java 10, компьютер DELL G3.
1. Способ получения
lock(), tryLock(), tryLock(long time, единица измерения TimeUnit) и lockInterruptible() используются для получения блокировок.
( 1) Метод lock() является наиболее часто используемым методом, который используется для получения блокировок . Если блокировка была получена другим потоком, подождите.
( 2) Метод tryLock() имеет возвращаемое значение, что означает, что он используется для попытки получения блокировки . Если получение было успешным, он возвращает true, если получение не удалось (то есть блокировка была получена другим). поток), он возвращает false, что означает следующее. Метод возвращает значение немедленно, несмотря ни на что. Вы не будете ждать там, если не сможете получить замок.
( 3) Метод tryLock(long time, TimeUnit) аналогичен методу tryLock(), но разница в том, что этот метод будет ждать в течение определенного периода времени, когда блокировка не может быть получена. в пределах срока он возвращает false. Возвращает true, если блокировка была получена изначально или во время периода ожидания.
( 4) Метод lockInterruptible() является особенным. При получении блокировки с помощью этого метода, если поток ожидает получения блокировки, поток может отреагировать на прерывание, то есть прервать состояние ожидания потока. То есть, когда два потока хотят получить блокировку с помощью lock.lockInterruptible() одновременно, если поток A получает блокировку в это время, а поток B только ожидает, то метод threadB.interrupt() вызывается в потоке B. Может прервать процесс ожидания потока B.
2.Примеры
Возьмем , к примеру, trylock.
Блокировка блокировки = ...; если (lock.tryLock()) { пытаться{ //Обработка задач }catch(Exception ex){ }окончательно{ lock.unlock(); //Снимаем блокировку } }еще { //Если блокировку невозможно получить, делаем другие действия напрямую}
В интерфейсе Java хранится множество методов, облегчающих прямые вызовы при использовании потоков. С интерфейсом блокировки все знакомы, и предварительное представление о концепции у нас уже есть. Таким образом, метод получения блокировки пока не очень ясен.
Выше приведены четыре метода получения блокировок в Java. Прочитав статью, вы сможете укрепить свою память и понимание в этой области. Если вас интересуют другие методы получения блокировок, вы также сможете найти соответствующие коды для практики после занятий.