Java for Beginner
870 subscribers
1.01K photos
275 videos
14 files
1.69K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что такое StackWalker в Java 9? 🤓

Ответ:

StackWalker (Java 9)
— это эффективный API для обхода стека вызовов.

Предоставляет метод walk(Function<Stream<StackFrame>, T>) для получения стрима кадров стека.

Более производительный, чем Thread.getStackTrace(), так как не создаёт массив всех кадров, а лениво обходит только нужные.

Позволяет фильтровать, пропускать и т.д. Полезен для логирования, отладки, безопасности (проверка, кто вызывает метод). Поддерживает режимы: RETAIN_CLASS_REFERENCE для работы с классами.



#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍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июля
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Эххххх и правда ведь....)
🤣4
Не оставляем телефон без присмотра....
🤣31
Напоминаю, завтра в 16 по МСК, я дам ссылочку присоединившись по которой, мы сможем посидеть и пообщаться.

Поотвечаю на вопросы, обсудим наболевшее)))

Приходите
🔥7
Скоро релиз))

Если я когда нибудь победю 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июля
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Ну как так то...)))
🤓2
Вот такая система оценок будет. 💪

Как вам? ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓2
Quod licet Iovi, non licet bovi
👍3
История технологии сегодня — 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
1
[Совет по Java #062]

Тема: 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
Что выведет код?

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