Что такое 🤓
Ответ:
StackWalker (Java 9) — это эффективный API для обхода стека вызовов.
Предоставляет метод walk(Function<Stream<StackFrame>, T>) для получения стрима кадров стека.
Более производительный, чем Thread.getStackTrace(), так как не создаёт массив всех кадров, а лениво обходит только нужные.
Позволяет фильтровать, пропускать и т.д. Полезен для логирования, отладки, безопасности (проверка, кто вызывает метод). Поддерживает режимы: RETAIN_CLASS_REFERENCE для работы с классами.
#собеседование
StackWalker в Java 9? Ответ:
Предоставляет метод walk(Function<Stream<StackFrame>, T>) для получения стрима кадров стека.
Более производительный, чем Thread.getStackTrace(), так как не создаёт массив всех кадров, а лениво обходит только нужные.
Позволяет фильтровать, пропускать и т.д. Полезен для логирования, отладки, безопасности (проверка, кто вызывает метод). Поддерживает режимы: RETAIN_CLASS_REFERENCE для работы с классами.
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
https://habr.com/ru/articles/1060204/
Статья для размышлений за завтраком. И одна из тем которые я предлагаю завтра обсудить
Статья для размышлений за завтраком. И одна из тем которые я предлагаю завтра обсудить
Хабр
А нам точно нужны code agents?
Предисловие На написание данной статьи меня побудило несколько факторов: Проблемы со сгенерированным кодом при работе в команде. Возросшая когнитивная нагрузка. Активное (насильное) внедрение со...
👍4
История технологии сегодня — 18 июля
ℹ️ Кто родился в этот день
Ро́алд Хо́ффман (англ. Roald Hoffmann; род. 18 июля 1937 года, Золочев, Тарнопольское воеводство, Польша) — американский химик, лауреат Нобелевской премии по химии «за разработку теории протекания химических реакций» совместно с Кэнъити Фукуи.
Ха́ртмут Ми́хель (нем. Hartmut Michel; род. 18 июля 1948 года, Людвигсбург, Германия) — немецкий биохимик, лауреат Нобелевской премии по химии 1988 года за точную структуру бактериального реакционного фотосинтетического центра.
🌐 Знаковые события
1898 — Пьер и Мария Кюри представили в Парижской Академии доклад об открытии нового химического элемента — полония — второго после урана, обладающего радиоактивностью.
1968 — образована компания «Intel». Её основали Роберт Нойс и Гордон Мур.
1991 — Вышел первый номер компьютерного еженедельника «ComputerWorld — USSR», который известен под названием «Computer Weekly».
2011 — запуск космической обсерватории «Радиоастрон».
#Biography #Birth_Date #Events #18июля
Ро́алд Хо́ффман (англ. Roald Hoffmann; род. 18 июля 1937 года, Золочев, Тарнопольское воеводство, Польша) — американский химик, лауреат Нобелевской премии по химии «за разработку теории протекания химических реакций» совместно с Кэнъити Фукуи.
Ха́ртмут Ми́хель (нем. Hartmut Michel; род. 18 июля 1948 года, Людвигсбург, Германия) — немецкий биохимик, лауреат Нобелевской премии по химии 1988 года за точную структуру бактериального реакционного фотосинтетического центра.
1898 — Пьер и Мария Кюри представили в Парижской Академии доклад об открытии нового химического элемента — полония — второго после урана, обладающего радиоактивностью.
1968 — образована компания «Intel». Её основали Роберт Нойс и Гордон Мур.
1991 — Вышел первый номер компьютерного еженедельника «ComputerWorld — USSR», который известен под названием «Computer Weekly».
2011 — запуск космической обсерватории «Радиоастрон».
#Biography #Birth_Date #Events #18июля
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Скоро релиз))
Если я когда нибудь победю Angular)))
Как вам? (это еще не доработанная версия)
Если я когда нибудь победю Angular)))
Как вам? (это еще не доработанная версия)
🔥11
История технологии сегодня — 19 июля
ℹ️ Кто родился в этот день
Сэмюэл Кольт (Самуи́л Кольт, англ. Samuel Colt; 22 июля 1814, Хартфорд — 10 января 1862, Хартфорд) — американский оружейник, изобретатель и промышленник, основатель компании Colt’s Patent Fire-Arms Manufacturing Company (сейчас Colt’s Manufacturing Company). Происходил из аристократической и достаточно богатой семьи, но независимо от этого основал компанию сам. Наибольшей известностью пользуется как реформатор револьверного оружия: в 1835 году изобрёл капсульный револьвер, который быстро потеснил другие системы и дал толчок для создания револьверов под унитарный металлический патрон.
🌐 Знаковые события
1927 — В Ленинграде испытан первый отечественный аэроглиссер.
#Biography #Birth_Date #Events #19июля
Сэмюэл Кольт (Самуи́л Кольт, англ. Samuel Colt; 22 июля 1814, Хартфорд — 10 января 1862, Хартфорд) — американский оружейник, изобретатель и промышленник, основатель компании Colt’s Patent Fire-Arms Manufacturing Company (сейчас Colt’s Manufacturing Company). Происходил из аристократической и достаточно богатой семьи, но независимо от этого основал компанию сам. Наибольшей известностью пользуется как реформатор револьверного оружия: в 1835 году изобрёл капсульный револьвер, который быстро потеснил другие системы и дал толчок для создания револьверов под унитарный металлический патрон.
1927 — В Ленинграде испытан первый отечественный аэроглиссер.
#Biography #Birth_Date #Events #19июля
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓2
История технологии сегодня — 20 июля
ℹ️ Кто родился в этот день
Григо́рий Васи́льевич Кисунько́ (укр. Григорій Васильович Кісунько; 20 июля 1918, Бельманка, Екатеринославская губерния — 11 октября 1998, Москва) — советский учёный в области радиоэлектроники. Один из создателей советской системы противоракетной обороны.
Герд Карл Би́нниг (нем. Gerd Karl Binnig; род. 20 июля 1947) — немецкий физик, в 1986 году совместно с Генрихом Рорером получил Нобелевскую премию по физике за изобретение сканирующего туннельного микроскопа. Разработки Биннига расширили возможности нанотехнологий, позволив не только визуализировать отдельные атомы, но и манипулировать ими.
Гео́ргий Э́рихович Лангема́к (8 (20) июля 1898, Старобельск, Старобельский уезд, Харьковская губерния, Российская империя — 11 января 1938, Москва, РСФСР, СССР) — российский и советский учёный, один из пионеров ракетной техники и один из создателей первых реактивных снарядов в СССР. Основоположник исследований по конструированию реактивных снарядов на бездымном порохе, открыл так называемый закон подобия, знание которого позволило определять оптимальную геометрию сопла реактивного двигателя без длительных дорогостоящих экспериментов — аналитическим расчётом. Ввёл в русский язык термин «космонавтика».
🌐 Знаковые события
1807 — Нисефор Ньепс с братом получили патент на один из ранних двигателей внутреннего сгорания: пиреолофор[англ.].
1969 — «Аполлон-11» совершил первую в истории пилотируемую посадку на Луну.
#Biography #Birth_Date #Events #20июля
Григо́рий Васи́льевич Кисунько́ (укр. Григорій Васильович Кісунько; 20 июля 1918, Бельманка, Екатеринославская губерния — 11 октября 1998, Москва) — советский учёный в области радиоэлектроники. Один из создателей советской системы противоракетной обороны.
Герд Карл Би́нниг (нем. Gerd Karl Binnig; род. 20 июля 1947) — немецкий физик, в 1986 году совместно с Генрихом Рорером получил Нобелевскую премию по физике за изобретение сканирующего туннельного микроскопа. Разработки Биннига расширили возможности нанотехнологий, позволив не только визуализировать отдельные атомы, но и манипулировать ими.
Гео́ргий Э́рихович Лангема́к (8 (20) июля 1898, Старобельск, Старобельский уезд, Харьковская губерния, Российская империя — 11 января 1938, Москва, РСФСР, СССР) — российский и советский учёный, один из пионеров ракетной техники и один из создателей первых реактивных снарядов в СССР. Основоположник исследований по конструированию реактивных снарядов на бездымном порохе, открыл так называемый закон подобия, знание которого позволило определять оптимальную геометрию сопла реактивного двигателя без длительных дорогостоящих экспериментов — аналитическим расчётом. Ввёл в русский язык термин «космонавтика».
1807 — Нисефор Ньепс с братом получили патент на один из ранних двигателей внутреннего сгорания: пиреолофор[англ.].
1969 — «Аполлон-11» совершил первую в истории пилотируемую посадку на Луну.
#Biography #Birth_Date #Events #20июля
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
[Совет по Java #062]
Тема:
Проблема: Метод
Это приводит к тому, что разделяемые объекты остаются в частично обновлённом состоянии, а другие потоки, захватившие освобождённые мониторы, могут читать несогласованные данные. Остановка потока в произвольный момент нарушает инварианты объектов, и восстановить состояние системы становится невозможно. Метод был объявлен устаревшим (deprecated) ещё в Java 1.2 и никогда не должен использоваться в production-коде.
Решение: Вместо принудительной остановки используйте кооперативный механизм прерывания. Вызовите
Целевой поток должен периодически проверять статус прерывания с помощью
Дополнительно можно использовать
Объяснение: При вызове
Все мониторы, захваченные этим потоком, принудительно освобождаются, что позволяет другим потокам войти в критическую секцию до того, как изменения были завершены.
Это нарушает атомарность и может привести к трудноотлавливаемым повреждениям данных.
#Java #советы
Тема:
Thread.stop() устарел и опасен (разблокирует все мониторы, оставляя данные в несогласованном состоянии).Проблема: Метод
Thread.stop() принудительно завершает поток, выбрасывая ThreadDeath в целевом потоке. При этом освобождаются все блокировки, которые поток удерживал, но изменения, сделанные в критической секции, не откатываются. Это приводит к тому, что разделяемые объекты остаются в частично обновлённом состоянии, а другие потоки, захватившие освобождённые мониторы, могут читать несогласованные данные. Остановка потока в произвольный момент нарушает инварианты объектов, и восстановить состояние системы становится невозможно. Метод был объявлен устаревшим (deprecated) ещё в Java 1.2 и никогда не должен использоваться в production-коде.
Решение: Вместо принудительной остановки используйте кооперативный механизм прерывания. Вызовите
Thread.interrupt() на потоке, который нужно завершить. Целевой поток должен периодически проверять статус прерывания с помощью
Thread.interrupted() или Thread.currentThread().isInterrupted() и завершать свою работу корректно, освобождая ресурсы и приводя данные в согласованное состояние. Для блокирующих операций (например, wait(), sleep()) прерывание выбрасывает InterruptedException, которое следует обработать, прервав выполнение. Дополнительно можно использовать
volatile boolean флаг для сигнализации завершения, но прерывание является стандартным и более интегрированным с JDK.public class ThreadStopExample {
//Антипаттерн: Thread.stop()
public static void badStop() throws InterruptedException {
Thread t = new Thread(() -> {
while (true) {
System.out.println("Работаю...");
// Если здесь stop() будет вызван, данные могут быть повреждены
}
});
t.start();
Thread.sleep(100);
t.stop(); // Опасно! Освобождает мониторы, оставляя объекты в мусорном состоянии
}
//Правильно: кооперативное завершение через прерывание
public static void goodInterrupt() throws InterruptedException {
Thread t = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
System.out.println("Безопасная работа...");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// Восстанавливаем статус прерывания и выходим
Thread.currentThread().interrupt();
break;
}
}
System.out.println("Поток корректно завершён");
});
t.start();
Thread.sleep(2000);
t.interrupt(); // Сигнал остановки
t.join();
}
// Альтернатива: volatile флаг
private volatile boolean running = true;
public void safeWithFlag() throws InterruptedException {
Thread t = new Thread(() -> {
while (running) {
System.out.println("Работа с флагом...");
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// При прерывании тоже можем выйти
Thread.currentThread().interrupt();
break;
}
}
});
t.start();
Thread.sleep(1000);
running = false; // Сигнал остановки
t.interrupt(); // Дополнительно для прерывания блокировок
t.join();
}
public static void main(String[] args) throws InterruptedException {
// badStop(); // Не запускайте!
goodInterrupt();
}
}Объяснение: При вызове
stop() JVM немедленно завершает поток, не давая ему возможности завершить текущую операцию. Все мониторы, захваченные этим потоком, принудительно освобождаются, что позволяет другим потокам войти в критическую секцию до того, как изменения были завершены.
Это нарушает атомарность и может привести к трудноотлавливаемым повреждениям данных.
interrupt() лишь устанавливает флаг прерывания, не вмешиваясь в выполнение. Поток сам решает, когда и как реагировать на этот сигнал, что позволяет ему корректно завершить работу. Блокирующие методы (например, sleep(), wait(), join(), BlockingQueue.put()) проверяют статус прерывания и выбрасывают InterruptedException, обеспечивая немедленную реакцию на сигнал. В коде с интенсивными вычислениями необходимо явно проверять isInterrupted() в цикле.#Java #советы
👍5
Что выведет код?
#Tasks
public class ThreadStopTricky {
private static int value = 0;
public static void main(String[] args) throws Exception {
Thread t = new Thread(() -> {
synchronized (ThreadStopTricky.class) {
value = 1;
try { Thread.sleep(1000); } catch (InterruptedException e) {}
value = 2;
}
});
t.start();
Thread.sleep(50);
t.stop();
synchronized (ThreadStopTricky.class) {
System.out.println(value);
}
}
}#Tasks
👍2
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Ребят, продолжаю набирать желающих обучиться Java!
Изучаем до уровня стандартного мидла)
Пишите @Oleborn
Изучаем до уровня стандартного мидла)
Пишите @Oleborn