Коли завдання намагається записати в повну чергу завдання буде переведено в стан блокування (таким чином, воно не споживає процесорний час і можуть виконуватися інші завдання), доки не звільниться місце в черзі або не закінчиться час блокування.
Черга повністю заповнена, коли rear знаходиться в останній позиції масиву, тобто (MaxSize -1). Зараз більше жодних елементів не можна вставляти в чергу, навіть якщо в черзі є порожні місця. Це недолік простих черг.
Для правильної роботи черги не повинні заповнюватися, оскільки, якщо це станеться, програми більше не зможуть розміщувати повідомлення в черзі, яку вони вказують. Хоча повідомлення не втрачається, якщо це станеться, повна черга може спричинити значні незручності.
Перевірити, чи черга ПОВНА ( ззаду == РОЗМІР – 1 ). Якщо він FULL, вивести помилку та завершити функцію. Якщо воно НЕ ПОВНЕ, тоді збільште значення rear на одиницю ( rear++ ) і встановіть queue[rear] = value .
Черги є використовується для передачі даних між завданнями. Черга схожа на розмір буфера FIFO. В основному це FIFO, але також можна перезаписати дані в першому буфері. Крім того, чергу можна записувати та читати кількома завданнями.
Він чекатиме, поки елемент буде вставлено в чергу. Простіше кажучи, метод take() BlockingQueue заблокує, якщо Queue порожній і Метод put() BlockingQueue заблокує, якщо Черга заповнена.
Повідомлення видаляються У деяких випадках, коли черга повідомлень досягає максимальної місткості, будь-які нові повідомлення, надіслані до черги, можуть бути видалені або відхилені. Це може призвести до втрати повідомлення, що може бути прийнятним у деяких програмах, але не в інших, де цілісність повідомлення є критичною.