Секреты Java
Обсуждаем Java, архитектуру, фреймворки и всё, о чем должны говорить разработчики. Реклама на бирже: https://telega.in/c/java_secrets По всем вопросам @anton_java
Більше7 074
Підписники
+1324 години
+1007 днів
+64830 днів
- Підписники
- Перегляди допису
- ER - коефіцієнт залучення
Триває завантаження даних...
Приріст підписників
Триває завантаження даних...
❓Что выведет код на изображении выше?Anonymous voting
- true true true
- false true true
- false true false
- true true false
- Ошибка компиляции
❤ 7👍 2
Фото недоступнеДивитись в Telegram
✅ Как получить текущий stack trace?
Stack trace представляет собой последовательность методов, от последнего к первому, которые были вызваны выполняемой программой (потоком). С помощью него можно отследить где было выброшено исключение или через какую цепочку методов программа дошла до какой-либо места в коде. Удобно для дебага.
Чтобы получить текущий stack trace можно использовать вызов метода
getStackTrace()
у настоящего потока, например:
public class StackTraceExample {
public static void main(String[] args) {
method1();
}
public static void method1() {
method2();
}
public static void method2() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
for (StackTraceElement element : stackTrace) {
System.out.println(element.getMethodName());
}
}
}
В данном примере метод method2
выводит все вызванные методы в стеке вызовов. Результат выполнения программы будет следующим:
getStackTrace
method2
method1
main
Объекты класса StackTraceElement
представляют элементы стек стрейса:) Можно узнать различную информацию у данного элемента, такую как имя метода в данном месте стека (getMethodName()
), имя класса (getClassName()
) и другую.
Для получения stack trace с использованием Throwable
можно вызвать метод getStackTrace()
, который также возвращает массив StackTraceElement
.
Пример использования Throwable для получения stack trace:
try {
// some code that may throw an exception
throw new Exception("Error occurred");
} catch (Exception e) {
StackTraceElement[] stackTrace = e.getStackTrace();
for (StackTraceElement element : stackTrace) {
System.out.println(element.toString());
}
}
Оба эти способа позволяют получить информацию о стеке вызовов для отслеживания ошибок и исключений в Java.
🫡 Секреты Java
#java #stacktrace❤ 7👍 2🔥 2👌 1
Фото недоступнеДивитись в Telegram
СЕНЛА — это международная компания полного цикла разработки программного обеспечения.
Мы запускаем бесплатный интенсивный курс Java SE.
Для кого: для тех, кто может справиться с Getters и Setters, умеет проходить в цикле по массиву, понимает, чем ссылочные типы отличаются от примитивов.
Города участники: Тула, Калуга, Орел и Владимир.
Как попасть: выполнить Небольшое тестовое задание. Регистрация до 23 июня.
Длительность обучения: 4 месяца.
Как проходит обучение:
• Групповой формат.
• Онлайн вебинары и разборы практических заданий.
• Изучение материала и практика под руководством ментора — практикующего специалиста компании.
И главное – возьмем на работу тех, кто пройдет курсы и справится с финальным заданием!
Реклама. ООО "СЕНЛА". ИНН 5751061648.
❤ 3😁 1
❓Что выведет код на изображении выше?Anonymous voting
- 4 6
- 3 3
- 4 7
- 3 6
- 3 0
- Ошибка компиляции
👍 4👌 3❤ 2
Фото недоступнеДивитись в Telegram
✅ Thread wait() vs. sleep()
Оба метода в Java имеют схожую функциональность, но имеют разные принципы работы.
Метод
wait()
вызывается на объекте, причем на любом, т.к. он определен в классе Object.
Метод должен быть вызван внутри блока synchronized и на объекте на котором получен lock, в противном случае мы получим исключение
java.lang.IllegalMonitorStateException:
current thread is not owner
Метод wait()
заставляет текущий поток остановиться и ждать, пока не будет освобожден. После этого поток снова становится активным.
Пример использования метода wait()
:
Object lock = new Object();
synchronized(lock) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
После вызова wait()
поток будет ожидать пока его не освободит другой поток вызовом метода notify()
на этом же объекте.
Thread.sleep()
- статический метод и в отличие от wait()
, просто останавливает поток на указанное время (если не был прерван). Он может быть вызван из любого места и не требует блока synchronized для исполнения.
Пример использования метода sleep()
:
try {
Thread.sleep(1000);
// Поток засыпает на 1 секунду
} catch (InterruptedException e) {
e.printStackTrace();
}
Пробуждение потока
Когда мы используем метод sleep()
, поток запускается через указанное время, если он не прерывается до этого.
Для wait()
процесс пробуждения немного сложнее. Мы можем разбудить поток, вызвав другим потоком методы notify()
/notifyAll()
на том же объекте, которые тоже должны быть вызваны в блоке synchronized. Либо можно вызвать метод wait()
с указанием таймаута.
Таким образом, основное различие между методами wait()
и sleep()
заключается в том, что wait()
используется для синхронизации между потоками, в то время как sleep()
просто приостанавливает выполнение текущего потока на определенное время.
🫡 Секреты Java
#java #multithreading👍 14❤ 6🔥 1
Фото недоступнеДивитись в Telegram
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление:
1. Frontend / JavaScript
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. С/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
❤ 2👍 1
Оберіть інший тариф
На вашому тарифі доступна аналітика тільки для 5 каналів. Щоб отримати більше — оберіть інший тариф.