#Вопросы_с_собеседования
❓Можно ли перегружать метод main() в Java?
Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main().
❓Можно ли перегружать метод main() в Java?
👍27
👍29🤔11😱6
Как остановить поток?
На данный момент в
Для корректной остановки потока можно использовать метод класса
Схема действия при этом получается следующей:
• Реализовать поток.
• В потоке периодически проводить проверку статуса прерывания через вызов
• Если состояние флага изменилось или было выброшено исключение во время ожидания/спячки, следовательно поток пытаются остановить извне.
• Принять решение – продолжить работу (если по каким-то причинам остановиться невозможно) или освободить заблокированные потоком ресурсы и закончить выполнение.
Возможная проблема, которая присутствует в этом подходе – блокировки на потоковом вводе-выводе. Если поток заблокирован на чтении данных - вызов
Второй вариант реализации метода остановки (а также и приостановки) – сделать собственный аналог
На данный момент в
Java принят уведомительный порядок остановки потока (хотя JDK 1.0 и имеет несколько управляющих выполнением потока методов, например stop(), suspend() и resume() - в следующих версиях JDK все они были помечены как deprecated из-за потенциальных угроз взаимной блокировки).Для корректной остановки потока можно использовать метод класса
Thread - interrupt(). Этот метод выставляет некоторый внутренний флаг-статус прерывания. В дальнейшем состояние этого флага можно проверить с помощью метода isInterrupted() или Thread.interrupted() (для текущего потока). Метод interrupt() также способен вывести поток из состояния ожидания или спячки. Т.е. если у потока были вызваны методы sleep() или wait() – текущее состояние прервется и будет выброшено исключение InterruptedException. Флаг в этом случае не выставляется.Схема действия при этом получается следующей:
• Реализовать поток.
• В потоке периодически проводить проверку статуса прерывания через вызов
isInterrupted().• Если состояние флага изменилось или было выброшено исключение во время ожидания/спячки, следовательно поток пытаются остановить извне.
• Принять решение – продолжить работу (если по каким-то причинам остановиться невозможно) или освободить заблокированные потоком ресурсы и закончить выполнение.
Возможная проблема, которая присутствует в этом подходе – блокировки на потоковом вводе-выводе. Если поток заблокирован на чтении данных - вызов
interrupt() из этого состояния его не выведет. Решения тут различаются в зависимости от типа источника данных. Если чтение идет из файла – долговременная блокировка крайне маловероятна и тогда можно просто дождаться выхода из метода read(). Если же чтение каким-то образом связано с сетью – стоит использовать неблокирующий ввод-вывод из Java NIO.Второй вариант реализации метода остановки (а также и приостановки) – сделать собственный аналог
interrupt(). Т.е. объявить в классе потока флаги – на остановку и/или приостановку и выставлять их путем вызова заранее определённых методов извне. Методика действия при этом остаётся прежней – проверять установку флагов и принимать решения при их изменении. Недостатки такого подхода. Во-первых, потоки в состоянии ожидания таким способом не «оживить». Во-вторых, выставление флага одним потоком совсем не означает, что второй поток тут же его увидит. Для увеличения производительности виртуальная машина использует кеш данных потока, в результате чего обновление переменной у второго потока может произойти через неопределенный промежуток времени (хотя допустимым решением будет объявить переменную-флаг как volatile).👍17
Три задачи на знание Java от ChatGPT
Попросили языковую модель ChatGPT составить три задачи на знание Java: простую, среднюю и сложную.
Смотреть статью
Попросили языковую модель ChatGPT составить три задачи на знание Java: простую, среднюю и сложную.
Смотреть статью
Tproger
Три задачи на знание Java от ChatGPT / Tproger
Языковая модель ChatGPT составила простую, среднюю и сложную задачи по Java. Сможете ли вы решить все три задачи?
👍11
#Вопросы_с_собеседования
🎙️ Чем занимается сборка мусора в Java?
Сборка мусора Java — это метод, с помощью которого приложения Java автоматически сохраняют свою память, удаляя или очищая неиспользуемые объекты и пакеты в памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥1😱1
Пишем свой первый сервер на Java и Spring Boot
В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты, приложение же напишем на самом распространённом и востребованном Java-фреймворке – Spring Boot.
Смотреть статью
В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты, приложение же напишем на самом распространённом и востребованном Java-фреймворке – Spring Boot.
Смотреть статью
Библиотека программиста
☕ Пишем свой первый сервер на Java и Spring Boot
В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты. Приложение напишем на самом распространённом и востребованном Java-фреймворке – Spring…
👍16🔥4😱1
#Вопросы_с_собеседования
🎙️ Каковы различия между подклассом и внутренним классом?
Ответ на картинке.
Ответ на картинке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤1
#Вопросы_с_собеседования
🎙️ Какие есть типы данных в Java?
В Java существует 8 типов данных:
1. short
2. byte
3. char
4. int
5. float
6. double
7. long
8. boolean
В Java существует 8 типов данных:
2. byte
3. char
4. int
5. float
6. double
7. long
8. boolean
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33🤔2😢1
#Вопросы_с_собеседования
🎙️ Что такое исключение? Какой пакет содержит все определения классов исключений в Java?
Исключения (Exceptions) — это нештатные ситуации, возникающие во время выполнения программы. Они могут произойти в результате неправильного ввода пользователем или неправильной логики кодера. Пакет java.lang.Exception содержит все определения классов исключений в Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🤔2
Какой результат выведет следующая программа?
Anonymous Quiz
10%
Программа уйдет в бесконечный цикл
8%
Hello
49%
Программа не скомпилируется
34%
Hello world
👍32🤔1
#Вопросы_с_собеседования
🎙️ Выполнится ли блок finally, если блок try или catch выполняют инструкцию return?
Да, блок finally выполнится, даже если return выполнился в блоке try или catch. Это один из самых популярных и сложных вопросов по Java. Запомните: единственный способ остановить выполнение блока finally — использовать System.exit().
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64😱8🔥4
Нужно ли использовать лямбды для оптимизации кода, либо они предназначены только для улучшения читаемости?
Anonymous Quiz
34%
Только улучшение читаемости
40%
Лучше использовать всегда, т. к. происходит оптимизация
25%
Есть смысл использовать только в циклах заместо анонимных классов
👍19🤔11❤1😢1