Spec-Zone.ru › OpenJDK 27

Класс ArrayBlockingQueue<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.ArrayBlockingQueue<E>
Параметры типа:
E - тип элементов, хранящихся в этой очереди
Все реализуемые интерфейсы:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
Ограниченная блокирующая очередь на основе массива. Эта очередь упорядочивает элементы по принципу FIFO (первым пришёл — первым ушёл). Голова очереди — это элемент, который находится в очереди дольше всего. Хвост очереди — это элемент, который находится в очереди меньше всего времени. Новые элементы добавляются в хвост очереди, а операции извлечения из очереди получают элементы из её головы.

Это классический «буфер ограниченного размера», в котором массив фиксированного размера хранит элементы, добавляемые производителями и извлекаемые потребителями. После создания ёмкость изменить нельзя. Попытки put элемент в заполненную очередь приведут к блокировке операции; попытки take элемент из пустой очереди также приведут к блокировке.

Этот класс поддерживает необязательную политику справедливости для упорядочивания ожидающих потоков-производителей и потоков-потребителей. По умолчанию этот порядок не гарантируется. Однако очередь, созданная с параметром справедливости, равным true, предоставляет потокам доступ в порядке FIFO. Справедливость обычно снижает пропускную способность, но уменьшает её вариативность и предотвращает голодание.

Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator.

Этот класс входит в состав фреймворка коллекций Java.

Начиная с:
1.5
См. также:
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
ArrayBlockingQueue(int capacity)
Создаёт ArrayBlockingQueue с заданной (фиксированной) ёмкостью и политикой доступа по умолчанию.
ArrayBlockingQueue(int capacity, boolean fair)
Создаёт ArrayBlockingQueue с заданной (фиксированной) ёмкостью и указанной политикой доступа.
ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
Создаёт ArrayBlockingQueue с заданной (фиксированной) ёмкостью и указанной политикой доступа, изначально содержащую элементы заданной коллекции, добавленные в порядке обхода её итератора.

Краткое описание методов

Модификатор и тип Метод Описание
boolean add(E e)
Вставляет указанный элемент в хвост этой очереди, если это можно сделать немедленно, не превышая её ёмкость; в случае успеха возвращает true, а если очередь заполнена, выбрасывает IllegalStateException.
void clear()
Атомарно удаляет все элементы из этой очереди.
boolean contains(Object o)
Возвращает true, если эта очередь содержит указанный элемент.
int drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их в заданную коллекцию.
int drainTo(Collection<? super E> c, int maxElements)
Удаляет из этой очереди не более заданного числа доступных элементов и добавляет их в заданную коллекцию.
void forEach(Consumer<? super E> action)
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не выбросит исключение.
Iterator<E> iterator()
Возвращает итератор по элементам этой очереди в надлежащем порядке.
boolean offer(E e)
Вставляет указанный элемент в хвост этой очереди, если это можно сделать немедленно, не превышая её ёмкость; в случае успеха возвращает true, а если очередь заполнена — false.
boolean offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в хвост этой очереди, ожидая освобождения места не дольше указанного времени, если очередь заполнена.
E peek()
Получает, но не удаляет голову этой очереди; если очередь пуста, возвращает null.
E poll()
Получает и удаляет голову этой очереди; если очередь пуста, возвращает null.
E poll(long timeout, TimeUnit unit)
Получает и удаляет голову этой очереди, при необходимости ожидая появления элемента не дольше указанного времени.
void put(E e)
Вставляет указанный элемент в хвост этой очереди, ожидая освобождения места, если очередь заполнена.
int remainingCapacity()
Возвращает число дополнительных элементов, которые эта очередь в идеальных условиях (при отсутствии ограничений по памяти или ресурсам) может принять без блокировки.
boolean remove(Object o)
Удаляет один экземпляр указанного элемента из этой очереди, если он присутствует.
boolean removeAll(Collection<?> c)
Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция).
boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция).
boolean retainAll(Collection<?> c)
Оставляет только те элементы этой коллекции, которые содержатся в указанной коллекции (необязательная операция).
int size()
Возвращает число элементов в этой очереди.
Spliterator<E> spliterator()
Возвращает Spliterator для элементов этой очереди.
E take()
Получает и удаляет голову этой очереди, при необходимости ожидая появления элемента.
Object[] toArray()
Возвращает массив, содержащий все элементы этой очереди в надлежащем порядке.
<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы этой очереди в надлежащем порядке; тип возвращаемого массива во время выполнения совпадает с типом указанного массива.

Методы, объявленные в классе AbstractQueue

addAll, element, remove
Модификатор и тип Метод Описание
boolean addAll(Collection<? extends E> c)
Добавляет все элементы указанной коллекции в эту очередь.
E element()
Получает, но не удаляет голову этой очереди.
E remove()
Получает и удаляет голову этой очереди.

Методы, объявленные в классе AbstractCollection

containsAll, isEmpty, toString
Модификатор и тип Метод Описание
boolean containsAll(Collection<?> c)
Возвращает true, если эта коллекция содержит все элементы указанной коллекции.
boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементов.
String toString()
Возвращает строковое представление этой коллекции.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс объекта Object во время выполнения.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать до пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе Collection

equals, hashCode, parallelStream, stream, toArray
Модификатор и тип Метод Описание
boolean equals(Object o)
Сравнивает указанный объект с этой коллекцией на равенство.
int hashCode()
Возвращает значение хеш-кода этой коллекции.
default Stream<E> parallelStream()
Возвращает, возможно, параллельный Stream с этой коллекцией в качестве источника.
default Stream<E> stream()
Возвращает последовательный Stream с этой коллекцией в качестве источника.
default <T> T[] toArray(IntFunction<T[]> generator)
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator.

Подробное описание конструкторов

ArrayBlockingQueue

public ArrayBlockingQueue(int capacity)
Создает ArrayBlockingQueue с заданной (фиксированной) емкостью и политикой доступа по умолчанию.
Параметры:
capacity — емкость этой очереди
Исключения:
IllegalArgumentException — если capacity < 1

ArrayBlockingQueue

public ArrayBlockingQueue(int capacity, boolean fair)
Создает ArrayBlockingQueue с заданной (фиксированной) емкостью и указанной политикой доступа.
Параметры:
capacity — емкость этой очереди
fair — если true, то доступ к очереди для потоков, заблокированных при добавлении или удалении элементов, обрабатывается в порядке FIFO; если false, порядок доступа не определен.
Исключения:
IllegalArgumentException — если capacity < 1

ArrayBlockingQueue

public ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
Создает ArrayBlockingQueue с заданной (фиксированной) емкостью и указанной политикой доступа; изначально очередь содержит элементы заданной коллекции, добавленные в порядке обхода итератора коллекции.
Параметры:
capacity — емкость этой очереди
fair — если true, то доступ к очереди для потоков, заблокированных при добавлении или удалении элементов, обрабатывается в порядке FIFO; если false, порядок доступа не определен.
c — коллекция элементов, которые изначально будут содержаться в очереди
Исключения:
IllegalArgumentException — если capacity меньше c.size() или меньше 1.
NullPointerException — если указанная коллекция или любой ее элемент равны null

Подробное описание методов

add

public boolean add(E e)
Добавляет указанный элемент в конец этой очереди, если это можно сделать немедленно, не превышая ее емкость; при успехе возвращает true, а если очередь заполнена, выбрасывает IllegalStateException.
Определено в:
add в интерфейсе BlockingQueue<E>
Определено в:
add в интерфейсе Collection<E>
Определено в:
add в интерфейсе Queue<E>
Переопределено:
add в классе AbstractQueue<E>
Параметры:
e — добавляемый элемент
Возвращает:
true (как указано в Collection.add(E))
Исключения:
IllegalStateException — если очередь заполнена
NullPointerException — если указанный элемент равен null

offer

public boolean offer(E e)
Добавляет указанный элемент в конец этой очереди, если это можно сделать немедленно, не превышая ее емкость; при успехе возвращает true, а если очередь заполнена — false. Обычно этот метод предпочтительнее метода add(E), который может не добавить элемент только путем выбрасывания исключения.
Определено в:
offer в интерфейсе BlockingQueue<E>
Определено в:
offer в интерфейсе Queue<E>
Параметры:
e — добавляемый элемент
Возвращает:
true, если элемент был добавлен в эту очередь, иначе false
Исключения:
NullPointerException — если указанный элемент равен null

put

public void put(E e) throws InterruptedException
Добавляет указанный элемент в конец этой очереди; если очередь заполнена, ожидает освобождения места.
Определено в:
put в интерфейсе BlockingQueue<E>
Параметры:
e — добавляемый элемент
Исключения:
InterruptedException — если ожидание было прервано
NullPointerException — если указанный элемент равен null

offer

public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
Добавляет указанный элемент в конец этой очереди; если очередь заполнена, ожидает освобождения места в течение указанного времени.
Определено в:
offer в интерфейсе BlockingQueue<E>
Параметры:
e — добавляемый элемент
timeout — время ожидания до прекращения ожидания, в единицах unit
unit — TimeUnit, определяющий интерпретацию параметра timeout
Возвращает:
true в случае успеха или false, если указанное время ожидания истекло до освобождения места
Исключения:
InterruptedException — если ожидание было прервано
NullPointerException — если указанный элемент равен null

poll

public E poll()
Описание скопировано из интерфейса: Queue
Извлекает и удаляет элемент из начала этой очереди или возвращает null, если очередь пуста.
Определено в:
poll в интерфейсе Queue<E>
Возвращает:
элемент из начала этой очереди или null, если очередь пуста

take

public E take() throws InterruptedException
Описание скопировано из интерфейса: BlockingQueue
Извлекает и удаляет элемент из начала этой очереди; при необходимости ожидает, пока элемент не станет доступен.
Определено в:
take в интерфейсе BlockingQueue<E>
Возвращает:
элемент из начала этой очереди
Исключения:
InterruptedException — если ожидание было прервано

poll

public E poll(long timeout, TimeUnit unit) throws InterruptedException
Описание скопировано из интерфейса: BlockingQueue
Извлекает и удаляет элемент из начала этой очереди; при необходимости ожидает появления элемента в течение указанного времени.
Определено в:
poll в интерфейсе BlockingQueue<E>
Параметры:
timeout — время ожидания до прекращения ожидания, в единицах unit
unit — TimeUnit, определяющий интерпретацию параметра timeout
Возвращает:
элемент из начала этой очереди или null, если указанное время ожидания истекло до появления элемента
Исключения:
InterruptedException — если ожидание было прервано

peek

public E peek()
Описание скопировано из интерфейса: Queue
Возвращает элемент из начала этой очереди, не удаляя его, или возвращает null, если очередь пуста.
Определено в:
peek в интерфейсе Queue<E>
Возвращает:
элемент из начала этой очереди или null, если очередь пуста

size

public int size()
Возвращает количество элементов в этой очереди.
Определено в:
size в интерфейсе Collection<E>
Возвращает:
количество элементов в этой очереди

remainingCapacity

public int remainingCapacity()
Возвращает количество дополнительных элементов, которые эта очередь в идеальных условиях (при отсутствии ограничений по памяти или ресурсам) может принять без блокировки. Это значение всегда равно начальной емкости этой очереди за вычетом ее текущего size.

Обратите внимание: проверка remainingCapacity не всегда позволяет определить, удастся ли добавить элемент, поскольку другой поток может в это время добавлять или удалять элемент.

Определено в:
remainingCapacity в интерфейсе BlockingQueue<E>
Возвращает:
оставшаяся емкость

remove

public boolean remove(Object o)
Удаляет из этой очереди один экземпляр указанного элемента, если он присутствует. Точнее, удаляет элемент e, такой что o.equals(e), если очередь содержит один или несколько таких элементов. Возвращает true, если эта очередь содержала указанный элемент (или, что эквивалентно, если в результате вызова очередь изменилась).

Удаление внутренних элементов из очередей на основе кольцевого массива — по своей сути медленная и нарушающая работу операция, поэтому ее следует выполнять только в исключительных случаях, в идеале — только когда известно, что другие потоки не имеют доступа к очереди.

Определено в:
remove в интерфейсе BlockingQueue<E>
Определено в:
remove в интерфейсе Collection<E>
Переопределено:
remove в классе AbstractCollection<E>
Параметры:
o — элемент, который необходимо удалить из этой очереди, если он присутствует
Возвращает:
true, если в результате вызова очередь изменилась

contains

public boolean contains(Object o)
Возвращает true, если эта очередь содержит указанный элемент. Точнее, возвращает true тогда и только тогда, когда эта очередь содержит хотя бы один элемент e, такой что o.equals(e).
Определено в:
contains в интерфейсе BlockingQueue<E>
Определено в:
contains в интерфейсе Collection<E>
Переопределено:
contains в классе AbstractCollection<E>
Параметры:
o — объект, наличие которого в этой очереди необходимо проверить
Возвращает:
true, если эта очередь содержит указанный элемент

toArray

public Object[] toArray()
Возвращает массив, содержащий все элементы этой очереди в надлежащем порядке.

Возвращаемый массив будет «безопасным», поскольку эта очередь не сохраняет на него ссылок. (Иными словами, этот метод должен выделить новый массив.) Поэтому вызывающий код может свободно изменять возвращенный массив.

Этот метод служит связующим звеном между API на основе массивов и API на основе коллекций.

Определено в:
toArray в интерфейсе Collection<E>
Переопределено:
toArray в классе AbstractCollection<E>
Возвращает:
массив, содержащий все элементы этой очереди

toArray

public <T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы этой очереди в надлежащем порядке; тип возвращаемого массива во время выполнения совпадает с типом указанного массива. Если очередь помещается в указанный массив, она возвращается в нем. В противном случае выделяется новый массив с типом указанного массива во время выполнения и размером, равным размеру этой очереди.

Если очередь помещается в указанный массив с запасом места (то есть в массиве больше элементов, чем в очереди), элемент массива, следующий непосредственно за концом очереди, устанавливается в null.

Как и метод toArray(), этот метод служит связующим звеном между API на основе массивов и API на основе коллекций. Кроме того, он позволяет точно контролировать тип выходного массива во время выполнения и при определенных обстоятельствах может использоваться для снижения затрат на выделение памяти.

Предположим, что x — это очередь, содержащая только строки. Следующий код можно использовать для выгрузки очереди в новый выделенный массив типа String:

 String[] y = x.toArray(new String[0]);
Обратите внимание, что toArray(new Object[0]) функционально идентичен toArray().
Определено в:
toArray в интерфейсе Collection<E>
Переопределено:
toArray в классе AbstractCollection<E>
Параметры типа:
T — тип элементов массива, предназначенного для хранения коллекции
Параметры:
a — массив, в который должны быть помещены элементы очереди, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа во время выполнения
Возвращает:
массив, содержащий все элементы этой очереди
Исключения:
ArrayStoreException — если тип указанного массива во время выполнения не является супертипом типа во время выполнения каждого элемента этой очереди
NullPointerException — если указанный массив равен null

clear

public void clear()
Атомарно удаляет все элементы из этой очереди. После возврата этого вызова очередь будет пуста.
Определено в:
clear в интерфейсе Collection<E>
Переопределено:
clear в классе AbstractQueue<E>

drainTo

public int drainTo(Collection<? super E> c)
Описание скопировано из интерфейса: BlockingQueue
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию. Эта операция может быть эффективнее многократного извлечения элементов из очереди. Ошибка при попытке добавить элементы в коллекцию c может привести к тому, что на момент выбрасывания связанного исключения элементы не будут находиться ни в одной из коллекций, будут находиться в одной из них или в обеих. Попытка перенести элементы очереди в нее саму приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время выполнения операции.
Определено в:
drainTo в интерфейсе BlockingQueue<E>
Параметры:
c — коллекция, в которую следует перенести элементы
Возвращает:
количество перенесенных элементов
Исключения:
UnsupportedOperationException — если указанная коллекция не поддерживает добавление элементов
ClassCastException — если класс элемента этой очереди не позволяет добавить его в указанную коллекцию
NullPointerException — если указанная коллекция равна null
IllegalArgumentException — если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди препятствует его добавлению в указанную коллекцию

drainTo

public int drainTo(Collection<? super E> c, int maxElements)
Описание скопировано из интерфейса: BlockingQueue
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию. Ошибка при попытке добавить элементы в коллекцию c может привести к тому, что на момент выбрасывания связанного исключения элементы не будут находиться ни в одной из коллекций, будут находиться в одной из них или в обеих. Попытка перенести элементы очереди в нее саму приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время выполнения операции.
Определено в:
drainTo в интерфейсе BlockingQueue<E>
Параметры:
c — коллекция, в которую следует перенести элементы
maxElements — максимальное количество элементов для переноса
Возвращает:
количество перенесенных элементов
Исключения:
UnsupportedOperationException — если указанная коллекция не поддерживает добавление элементов
ClassCastException — если класс элемента этой очереди не позволяет добавить его в указанную коллекцию
NullPointerException — если указанная коллекция равна null
IllegalArgumentException — если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди препятствует его добавлению в указанную коллекцию

iterator

public Iterator<E> iterator()
Возвращает итератор по элементам этой очереди в надлежащем порядке. Элементы возвращаются по порядку — от первого (головы) до последнего (хвоста).

Возвращаемый итератор является слабо согласованным.

Определено в:
iterator в интерфейсе Collection<E>
Определено в:
iterator в интерфейсе Iterable<E>
Определено в:
iterator в классе AbstractCollection<E>
Возвращает:
итератор по элементам этой очереди в надлежащем порядке

spliterator

public Spliterator<E> spliterator()
Возвращает Spliterator для элементов этой очереди.

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

Spliterator сообщает характеристики Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.

Определено в:
spliterator в интерфейсе Collection<E>
Определено в:
spliterator в интерфейсе Iterable<E>
Примечание по реализации:
Spliterator реализует trySplit, чтобы обеспечить ограниченный параллелизм.
Возвращает:
Spliterator для элементов этой очереди
С:
1.8

forEach

public void forEach(Consumer<? super E> action)
Описание скопировано из интерфейса: Iterable
Выполняет указанное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не выбросит исключение. Если порядок обхода определен, действия выполняются в этом порядке. Исключения, выброшенные действием, передаются вызывающему коду.

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

Определено в:
forEach в интерфейсе Iterable<E>
Параметры:
action — действие, выполняемое для каждого элемента
Исключения:
NullPointerException — если указанное действие равно null

removeIf

public boolean removeIf(Predicate<? super E> filter)
Описание скопировано из интерфейса: Collection
Удаляет из этой коллекции все элементы, удовлетворяющие заданному предикату (необязательная операция). Ошибки или исключения времени выполнения, выброшенные во время обхода или предикатом, передаются вызывающему коду.
Определено в:
removeIf в интерфейсе Collection<E>
Параметры:
filter — предикат, возвращающий true для элементов, подлежащих удалению
Возвращает:
true, если были удалены какие-либо элементы
Исключения:
NullPointerException — если указанный фильтр равен null

removeAll

public boolean removeAll(Collection<?> c)
Описание скопировано из класса: AbstractCollection
Удаляет из этой коллекции все элементы, которые также содержатся в указанной коллекции (необязательная операция). После возврата этого вызова у коллекций не будет общих элементов.
Определено в:
removeAll в интерфейсе Collection<E>
Переопределено:
removeAll в классе AbstractCollection<E>
Параметры:
c — коллекция, содержащая элементы, которые нужно удалить из этой коллекции
Возвращает:
true, если в результате вызова эта коллекция изменилась
Исключения:
NullPointerException — если эта коллекция содержит один или несколько элементов null, а указанная коллекция не поддерживает элементы null (необязательно), или если указанная коллекция равна null
См. также:
  • AbstractCollection.remove(Object)
  • AbstractCollection.contains(Object)

retainAll

public boolean retainAll(Collection<?> c)
Описание скопировано из класса: AbstractCollection
Оставляет в этой коллекции только элементы, содержащиеся в указанной коллекции (необязательная операция). Иными словами, удаляет из этой коллекции все элементы, которые не содержатся в указанной коллекции.
Определено в:
retainAll в интерфейсе Collection<E>
Переопределено:
retainAll в классе AbstractCollection<E>
Параметры:
c — коллекция, содержащая элементы, которые следует оставить в этой коллекции
Возвращает:
true, если в результате вызова эта коллекция изменилась
Исключения:
NullPointerException — если эта коллекция содержит один или несколько элементов null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null
См. также:
  • AbstractCollection.remove(Object)
  • AbstractCollection.contains(Object)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API