🤔 Как это работает? — Java: Цикл for-each
В Java цикл for-each (или enhanced for loop) упрощает итерацию по коллекциям и массивам. Давайте посмотрим, как он работает.
➡️ Как это работает:
• numbers — это массив целых чисел.
• В строке for (int number : numbers) переменная number последовательно принимает значения из массива numbers.
• На каждой итерации выводится текущее значение number.
Развернутый аналог:
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
1
2
3
4
5
👩💻
@javaquiz
В Java цикл for-each (или enhanced for loop) упрощает итерацию по коллекциям и массивам. Давайте посмотрим, как он работает.
➡️ Как это работает:
• numbers — это массив целых чисел.
• В строке for (int number : numbers) переменная number последовательно принимает значения из массива numbers.
• На каждой итерации выводится текущее значение number.
Развернутый аналог:
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
1
2
3
4
5
👩💻
@javaquiz
❌ Антипаттерн недели: Забытая блокировка в многопоточном коде
Если использовать блокировки (synchronized) и забыть их освободить в случае исключения, можно легко привести к deadlock (взаимоблокировке).
Если во время выполнения блока synchronized возникает исключение, блокировка остаётся захваченной, что может заблокировать другие потоки навсегда.
✔️ Как исправить:
Используйте try-finally для гарантированного освобождения блокировки:
public class FixedExample {
private final Object lock = new Object();
public void performTask() {
synchronized (lock) {
try {
System.out.println("Задача выполняется...");
if (true) {
throw new RuntimeException("Ошибка!");
}
System.out.println("Задача завершена.");
} finally {
System.out.println("Блокировка освобождена.");
}
}
}
public static void main(String[] args) {
FixedExample example = new FixedExample();
example.performTask();
}
}
👩💻
@javaquiz
Если использовать блокировки (synchronized) и забыть их освободить в случае исключения, можно легко привести к deadlock (взаимоблокировке).
Если во время выполнения блока synchronized возникает исключение, блокировка остаётся захваченной, что может заблокировать другие потоки навсегда.
✔️ Как исправить:
Используйте try-finally для гарантированного освобождения блокировки:
public class FixedExample {
private final Object lock = new Object();
public void performTask() {
synchronized (lock) {
try {
System.out.println("Задача выполняется...");
if (true) {
throw new RuntimeException("Ошибка!");
}
System.out.println("Задача завершена.");
} finally {
System.out.println("Блокировка освобождена.");
}
}
}
public static void main(String[] args) {
FixedExample example = new FixedExample();
example.performTask();
}
}
👩💻
@javaquiz
👎4👍2
⚙️ ThreadLocal
В Java класс ThreadLocal позволяет хранить переменные, привязанные к конкретному потоку. Каждый поток имеет свою копию переменной, что удобно для работы с многопоточностью, когда нужно избежать совместного доступа к данным.
👩💻
@javaquiz
В Java класс ThreadLocal позволяет хранить переменные, привязанные к конкретному потоку. Каждый поток имеет свою копию переменной, что удобно для работы с многопоточностью, когда нужно избежать совместного доступа к данным.
👩💻
@javaquiz
👍3
👩💻 Открытый урок «Система сбора информации о деятельности эмитентов облигаций».
🗓 17 сентября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».
🎯 О чём поговорим:
✔️ Рассмотрим реальное приложение для сбора данных об эмитентах облигаций, а не просто демонстрационный пример.
✔️ Разберемся в архитектуре Java-приложений для финансовых данных.
✔️ Узнаем, как интегрировать данные о рынке в эффективные приложения.
👥 Кому будет интересно:
Это мероприятие будет полезно Java-разработчикам, архитекторам и IT-специалистам финансовых организаций. Вы получите ценные знания, которые сможете применить на практике.
🎁Дарим промокод, который дает скидку на обучение - JAVA_09
🔗 Ссылка на регистрацию: https://clck.ru/3P7us3
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🗓 17 сентября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».
🎯 О чём поговорим:
✔️ Рассмотрим реальное приложение для сбора данных об эмитентах облигаций, а не просто демонстрационный пример.
✔️ Разберемся в архитектуре Java-приложений для финансовых данных.
✔️ Узнаем, как интегрировать данные о рынке в эффективные приложения.
👥 Кому будет интересно:
Это мероприятие будет полезно Java-разработчикам, архитекторам и IT-специалистам финансовых организаций. Вы получите ценные знания, которые сможете применить на практике.
🎁
🔗 Ссылка на регистрацию: https://clck.ru/3P7us3
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576