Java Geek
2.53K subscribers
275 photos
1 file
26 links
Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах.

По всем вопросам @evgenycarter
Download Telegram
В чем разница между sleep() и wait(), notify() и notifyAll() методами?

Метод sleep() заставляет поток "заснуть" на определенное время (указывается в миллисекундах), после чего поток продолжит свою работу. Метод wait() освобождает монитор, занятый потоком, так что другие потоки могут использовать указанный блок кода и поток переходит в состояние waiting — поток будет ждать вызова метода notify() или notifyAll() другим потоком. Разница между notify() и notifyAll() в том, что notify() "высвободит" один поток (какой именно определить нельзя), а notifyAll() "освободит" все потоки из состояния waiting в состояние running.

👉 @java_geek
👍1
Что такое «fail-fast поведение»?

fail-fast поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast подхода позволяет избежать недетерминированного поведения программы в течение времени.

В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают ConcurrentModificationException, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора.

Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count):

• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.

👉 @java_geek
2
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра

1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Илье

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дайте краткую характеристику Enum в Java

Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется через ключевое слово — enum.

Вот пример с enum — допустимые роли в некоторой школе (см картинку).

Слова, написанные большими буквами, и есть те самые константы перечисления, которые объявляются упрощенно, без использования оператора new.

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

👉 @java_geek
2👍1
Как определить, содержит ли массив определенное значение в Java с помощью потоков?

Чтобы проверить, содержит ли массив значений int, double или long значение, используйте IntStream, DoubleStream или LongStream соответственно.

👉 @java_geek
👍4