27 Гугл 1 goto. Зарезервовані (ключові) слова. wait не в блоці synchronized. happens-before. BlockingQueue. Методи BlockingQueue
goto - оператор безумовного переходу в точку програми, позначену ярликом (label). В Java наразі не використовується, але слово все ще зарезервоване. Погіршує розуміння коду. Обмежує виконання оптимізацій JVM.
Зарезервовані (ключові) слова в Java - ідентифікатори, що мають спеціальне значення. Разом із синтаксисом операторів і роздільниками утворюють визначення мови Java. Компілятором клчові слова сприймаються як окрема команда, тому їх не можна використовувати в якості імені змінної, класу чи методу.
У Java зарезервовано 50 слів.
Два з них не використовуються (const, goto).
Примітиви: byte, short, int, long, char, float, double, boolean
Цикли і розгалудження: if, else, switch, case, default, while, do, break, continue, for
Виключення: try, catch, finally, throw, throws
Область видимості: private, protected, public
Оголошення/імпорт: import, package, class, interface, extends, implements, static, final, void, abstract, native
Створення/повернення/виклик: new, return, this, super
Багатопотоковість: (synchronized, volatile) instanceof, enum, assert, transient, strictfp, const, goto
Якщо викликати wait не в блоці synchronized - код викине виключення IllegalMonitorStateException.
happens-before - набір правил для упорядкування JVM послідовності виконання операцій. Щоб гарантувати, що програмний потік, що виконує операцію Y, може бачити результати дії Х (незалежно від того, відбуваються операції Х та Y у одному потоці чи різних) між Х та Y має бути відношення happens-before.
BlockingQueue - різновид черги Queue, яка додатково підтримує операції, що очікують, поки черга не стане непустою при вилученні елемента.
BlockibgQueue має граничну ємність, за межі якої не можна вставити елемент без блокування.
BlockingQueue не приймає пусті елементи. При додаванні нульового значення, реалізація викине виключення NullPointerException.
Всі реалізації, пов'язані з Blocking Queue є потокобезпечними. Методи виконуються використовуючи внутрішні блокування або інші форми управління паралелізмом.
Методи BlockingQueue:
1. М., що викидають виключення:
add() - додає елемент в кінець черги, кидає виключення, коли черга повна;
element() - повертає перший елемент черги; кидає виключення, якщо черга пуста;
remove() - видаляє елемент, кидає виключення, коли черга пуста.
2. М., що повертають значення:
offer() - вставляє елемент в кінець черги, повертає false, якщо черга повна. Може використовуватись із таймаутами;
peek() - повертає перший елемент черги; повертає null, якщо черга пуста;
poll() - видаляє елемент із черги; повертає null, якщо черга пуста.
3. M., що блокують операції:
put() - вставляє елемент в чергу; якщо черга повна - чекає поки з'явиться вільне місце і потім вставляє елемент;
take() - повертає і видаляє елемент; якщо черга пуста - чекає, поки з'явиться елемент, повертає і видаляє його.
Коментарі
Дописати коментар