Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
join(), чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join() в обратном порядке, то есть Т3 вызывает Т2.join, а Т2 вызывает Т1.join, таким образом Т1 закончит выполнение первым, а Т3 последним.👍22
ExecutorService
Лучший вариант использования
В этом примере создается
ExecutorService — это API JDK, который упрощает запуск задач в асинхронном режиме. В общем смысле, ExecutorService автоматически предоставляет пул потоков и API для назначения задач. Лучший вариант использования
ExecutorService — это обработка независимых задач, таких как транзакции или запросы по схеме "один поток для одной задачи".В этом примере создается
ExecutorService с помощью фабричного метода Executors.newSingleThreadExecutor(). Затем запускается задача с помощью метода submit(). В конце работы ExecutorService завершается с помощью метода shutdown().👍15
Класс Character
Класс
#для_начинающих
Класс
Character в Java является классом-обёрткой для примитивного типа данных char. Он предоставляет несколько полезных методов для работы с символами, таких как проверка на принадлежность к различным категориям (цифры, буквы, пробелы и т.д.) и преобразование регистров.#для_начинающих
👍13
Класс System
Класс
Класс
Класс
#для_начинающих
Класс
System представляет собой системный класс, который предоставляет набор методов и свойств, позволяющих взаимодействовать с операционной системой, окружением выполнения и осуществлять различные системные операции.Класс
System является частью пакета java.lang, который импортируется по умолчанию во все программы на Java.Класс
System является важным инструментом для взаимодействия с операционной системой и окружением выполнения. Он предоставляет широкий набор методов и свойств, которые могут быть использованы для различных целей.#для_начинающих
👍22
Класс Calendar
Класс
Момент времени можно представить в виде значения в миллисекундах, которое является смещением от эпохи, 1 января 1970 года 00:00:00.000 GMT (григорианский). Класс также предоставляет дополнительные поля и методы для реализации конкретной системы календаря за пределами пакета. Эти поля и методы определены как protected.
#для_продвинутых
Класс
Calendar представляет собой абстрактный класс, который предоставляет методы для преобразования между конкретным моментом времени и набором полей календаря, таких как год, месяц, день, часы, минуты, секунды и т. д., а также для манипулирования полями календаря, такими как получение даты следующей недели.Момент времени можно представить в виде значения в миллисекундах, которое является смещением от эпохи, 1 января 1970 года 00:00:00.000 GMT (григорианский). Класс также предоставляет дополнительные поля и методы для реализации конкретной системы календаря за пределами пакета. Эти поля и методы определены как protected.
#для_продвинутых
👍14❤1
Класс TimeZone
Класс
Класс
#для_продвинутых
Класс
TimeZone представляет собой часовой пояс. Часовой пояс — это географическая область, в которой используется один и тот же стандарт времени.Класс
TimeZone имеет несколько методов для работы с часовыми поясами. Например, метод getAvailableIDs() возвращает список всех известных часовых поясов. Метод getTimeZone(String id) возвращает объект TimeZone по его идентификатору.#для_продвинутых
👍13❤1
DecimalFormat
Чтобы использовать
Шаблон — это строка, которая определяет, как будет отображаться число.
#для_продвинутых
DecimalFormat — это класс, предназначенный для форматирования десятичных чисел. Он имеет множество параметров, которые позволяют настроить вывод числа в соответствии с вашими потребностями.Чтобы использовать
DecimalFormat, сначала вам нужно создать экземпляр класса. Вы можете сделать это, используя конструктор без параметров или конструктор с шаблоном.Шаблон — это строка, которая определяет, как будет отображаться число.
#для_продвинутых
👍7
ThreadDeath
Когда поток получает исключение
Важно отметить, что исключение
#для_продвинутых
ThreadDeath представляет собой исключение, которое указывает на то, что поток должен быть остановлен. Это исключение является подклассом Error, а не Exception, потому что оно является нормальным явлением и не должно обрабатываться в коде приложения.Когда поток получает исключение
ThreadDeath, он немедленно завершается. Если поток был заблокирован на мониторе, он сначала разблокирует монитор.Важно отметить, что исключение
ThreadDeath не может быть обработано с помощью блока try-catch. Если поток получает исключение ThreadDeath, оно просто игнорируется и поток завершается.#для_продвинутых
👍12❤1
Класс Throwable
Класс
Класс
Исключения делятся на две категории: ошибки и исключения. Ошибки являются необратимыми ситуациями, которые приводят к завершению работы программы. Исключения же являются обратимыми ситуациями, которые можно обработать и продолжить выполнение программы.
#для_продвинутых
Класс
Throwable является суперклассом для всех ошибок и исключений. Объекты класса Throwable используются для представления нештатных ситуаций, которые могут возникнуть во время выполнения программы.Класс
Throwable имеет следующие важные методы:getMessage() — возвращает строковое сообщение, описывающее исключение.printStackTrace() — выводит в стандартный поток ошибок подробную информацию об исключении, включая его тип, сообщение и стек вызовов.Исключения делятся на две категории: ошибки и исключения. Ошибки являются необратимыми ситуациями, которые приводят к завершению работы программы. Исключения же являются обратимыми ситуациями, которые можно обработать и продолжить выполнение программы.
#для_продвинутых
👍9
#вопросы_с_собеседований
В чем разница между Iterator и Enumeration?
— Iterator появился в JDK 1.2 и реализует интерфейс Iterable, в то время как Enumeration существовал в более ранних версиях JDK и не реализует Iterable.
— Методы Iterator позволяют удалять элементы во время итерации, в то время как методы Enumeration не предоставляют такой возможности.
— Iterator является "fail-fast", то есть выбросит ConcurrentModificationException, если коллекция была изменена, а Enumeration не гарантирует такого поведения.
— Iterator поддерживает обобщенные типы, а Enumeration работает только с объектами типа Object.
В чем разница между Iterator и Enumeration?
— Методы Iterator позволяют удалять элементы во время итерации, в то время как методы Enumeration не предоставляют такой возможности.
— Iterator является "fail-fast", то есть выбросит ConcurrentModificationException, если коллекция была изменена, а Enumeration не гарантирует такого поведения.
— Iterator поддерживает обобщенные типы, а Enumeration работает только с объектами типа Object.
👍17
#вопросы_с_собеседований
Почему современные фреймворки используют в основном только unchecked exceptions?
Unchecked exceptions используются в основном потому, что они не требуют обязательной обработки исключений в коде. Это позволяет упростить код и сделать его более читаемым. Однако, это также может привести к тому, что исключения не будут обработаны и программа может завершиться аварийно.
Некоторые же фреймворки используют checked exceptions для обработки ошибок ввода-вывода или других проблем, которые могут возникнуть в процессе выполнения программы. Однако, это может привести к тому, что код становится более сложным и менее читаемым.
Почему современные фреймворки используют в основном только unchecked exceptions?
Некоторые же фреймворки используют checked exceptions для обработки ошибок ввода-вывода или других проблем, которые могут возникнуть в процессе выполнения программы. Однако, это может привести к тому, что код становится более сложным и менее читаемым.
👍22
#вопросы_с_собеседований
Что будет, если в static блоке кода возникнет исключение?
Если в static блоке кода возникнет исключение, то это приведет к ошибке инициализации класса.
Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс.
Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям.
Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса.
Что будет, если в static блоке кода возникнет исключение?
Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс.
Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям.
Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса.
👍31
Класс Unsafe
Класс
#для_продвинутых
Класс
Unsafe — это мощный, но опасный инструмент, который позволяет выполнять низкоуровневые операции с памятью и внутренними механизмами JVM. Его использование не рекомендуется для обычных задач веб-разработки или стандартных приложений, но он может быть полезен в специфических ситуациях, требующих высокой производительности и обхода стандартных механизмов Java.#для_продвинутых
👍21
Класс MathContext
Класс
По умолчанию точность вычислений в Java равна 16 знакам после запятой, а режим округления —
#для_начинающих
Класс
MathContext используется для указания точности вычислений с плавающей запятой. Он определяет два параметра:precision — количество знаков после запятой, которые должны сохраняться в результате вычислений.roundingMode — способ округления значений, которые не могут быть точно представлены с заданной точностью.По умолчанию точность вычислений в Java равна 16 знакам после запятой, а режим округления —
HALF_UP.#для_начинающих
👍16❤1
EventListener
#для_продвинутых
EventListener (слушатель событий) — это интерфейс, который позволяет объектам реагировать на события, происходящие в системе. Он используется для создания интерактивных приложений, где действия пользователя или изменения в системе должны вызывать определенные реакции.#для_продвинутых
👍17
#вопросы_с_собеседований
Для чего используется оператор assert?
Оператор assert используется для проверки условий во время выполнения программы.
Он позволяет проверить истинность некоторого логического выражения и выбросить исключение AssertionError, если выражение ложно.
Основные применения assert:
- Проверка предусловий и постусловий в методах.
- Проверка инвариантов в критических секциях кода.
- Отладка при разработке, чтобы проверить ожидаемое состояние программы в определенных точках.
- Проверка условий в потенциально опасных ситуациях, например при работе с массивами.
assert лучше использовать для отладки и проверки инвариантов, а для критически важных проверок предусловий лучше применять явную проверку условий и выброс исключений.
Для чего используется оператор assert?
Он позволяет проверить истинность некоторого логического выражения и выбросить исключение AssertionError, если выражение ложно.
Основные применения assert:
- Проверка предусловий и постусловий в методах.
- Проверка инвариантов в критических секциях кода.
- Отладка при разработке, чтобы проверить ожидаемое состояние программы в определенных точках.
- Проверка условий в потенциально опасных ситуациях, например при работе с массивами.
assert лучше использовать для отладки и проверки инвариантов, а для критически важных проверок предусловий лучше применять явную проверку условий и выброс исключений.
👍9❤4
StringTokenizer
Создание объекта StringTokenizer:
#для_продвинутых
StringTokenizer — это класс в Java, который используется для разбиения строки на токены. Токены — это отдельные части строки, разделенные символами-разделителями.Создание объекта StringTokenizer:
StringTokenizer st = new StringTokenizer(строка, разделители);
строка — это строка, которую нужно разбить на токены.разделители — это строка, содержащая символы-разделители.#для_продвинутых
👍16🤔3❤2
java.lang.reflect.Constructor
Класс
#для_продвинутых
Класс
java.lang.reflect.Constructor представляет собой конструктор класса Java. Он используется для создания экземпляров класса, предоставляя доступ к информации о конструкторе, а также возможность его вызова.#для_продвинутых
👍19
MouseListener
MouseListener — это интерфейс в Java, позволяющий компонентам графического интерфейса (GUI) реагировать на действия мыши, такие как нажатие, отпускание, перемещение, вход и выход курсора. Он широко используется для создания интерактивных приложений.
#для_продвинутых
MouseListener — это интерфейс в Java, позволяющий компонентам графического интерфейса (GUI) реагировать на действия мыши, такие как нажатие, отпускание, перемещение, вход и выход курсора. Он широко используется для создания интерактивных приложений.
#для_продвинутых
👍22
KeyListener
#для_продвинутых
KeyListener — это интерфейс в Java, который позволяет отслеживать события, связанные с клавиатурой. Он используется для определения того, когда пользователь нажимает, отпускает или печатает клавишу.#для_продвинутых
👍16