Какое из следующих утверждений о потоках неверно?
1. Если метод
2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод
4. Если метод
Правильный ответ: 3. Если метод
Вызов метода
1. Если метод
start()
вызывается дважды для одного и того же объекта Thread
, во время выполнения генерируется исключение.2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод
run()
вызывается напрямую для объекта Thread
, во время выполнения генерируется исключение.4. Если метод
sleep()
вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.Правильный ответ: 3. Если метод
run()
вызывается напрямую для объекта Thread
, во время выполнения исключение не генерируется. Однако, код, написанный в методе run()
будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start()
, который приводит к выполнению метода run()
новым потоком.Вызов метода
start()
дважды для одного и того же объекта Thread
приведёт к генерированию исключения IllegalThreadStateException
во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.👍19🔥4❤2
Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
join()
, чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join()
в обратном порядке, то есть Т3
вызывает Т2.join
, а Т2
вызывает Т1.join
, таким образом Т1
закончит выполнение первым, а Т3
последним.👍28🔥5
📌 Хочешь улучшить свои знания и практические навыки в Java разработке?
Автор канала BigDecimal — действующий Senior Java-разработчик.
Разбор технологий, теория простыми словами, список литературы и примеры кода на github — всё это на канале BigDecimal
❔Какие уже есть примеры?
— Apache Kafka кластер с Spring Boot интеграцией и мониторингом через Prometheus и Grafana, с командами через Spring Shell для более наглядной демонстрации
— Spring Web REST API с PostgreSQL, миграциями через Flyway и Unit-тестами
— Алгоритм проверки SSL сертификатов
— И многое-многое другое...
Чтобы не пропустить разбор интересующей темы, переходи по ссылке и подписывайся: https://t.me/+a0-E_Hmoe4BiOTEy
Автор канала BigDecimal — действующий Senior Java-разработчик.
Разбор технологий, теория простыми словами, список литературы и примеры кода на github — всё это на канале BigDecimal
❔Какие уже есть примеры?
— Apache Kafka кластер с Spring Boot интеграцией и мониторингом через Prometheus и Grafana, с командами через Spring Shell для более наглядной демонстрации
— Spring Web REST API с PostgreSQL, миграциями через Flyway и Unit-тестами
— Алгоритм проверки SSL сертификатов
— И многое-многое другое...
Чтобы не пропустить разбор интересующей темы, переходи по ссылке и подписывайся: https://t.me/+a0-E_Hmoe4BiOTEy
👍8🔥3
В данном видео объясняется что такое паттерн Iterator и интерфейс Iterable в языке программирования Java. На примерах показывается для чего нужен Iterator и как его использовать. Рассматривается так же вопрос удаления и вставки элементов в LinkedList за константное время.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Об Iterator и Iterable c примерами.
В данном видео объясняется что такое паттерн Iterator и интерфейс Iterable в языке программирования Java. На примерах показывается для чего нужен Iterator и как его использовать. Рассматривается так же вопрос удаления и вставки элементов в LinkedList за константное…
👍12🔥2
Как управлять состоянием системы через события?
Event-driven архитектура — концепция программирования, которая позволяет создавать сложные приложения, используя событийно-ориентированный подход. Так создаются распределенные системы, которые легко масштабируются и обладают высокой отказоустойчивостью.
Начните изучать эту технологию на бесплатном открытом уроке «Архитектурный подход Event Driven Architecture» от OTUS.
На занятии рассмотрим:
✔️ взаимодействие сервисов на основе событий;
✔️ плюсы и минусы такого подхода;
✔️ сочетания событийного и синхронного взаимодействия;
✔️ паттерны проектирования событий;
✔️ подход Event Sourcing и CQRS.
Урок пройдёт 27 сентября в 20:00 мск в рамках курса «Microservice Architecture».
👩💻 Пройдите вступительное тестирование прямо сейчас и зарегистрируйтесь на событие: https://otus.pw/pfTt/
Event-driven архитектура — концепция программирования, которая позволяет создавать сложные приложения, используя событийно-ориентированный подход. Так создаются распределенные системы, которые легко масштабируются и обладают высокой отказоустойчивостью.
Начните изучать эту технологию на бесплатном открытом уроке «Архитектурный подход Event Driven Architecture» от OTUS.
На занятии рассмотрим:
✔️ взаимодействие сервисов на основе событий;
✔️ плюсы и минусы такого подхода;
✔️ сочетания событийного и синхронного взаимодействия;
✔️ паттерны проектирования событий;
✔️ подход Event Sourcing и CQRS.
Урок пройдёт 27 сентября в 20:00 мск в рамках курса «Microservice Architecture».
👩💻 Пройдите вступительное тестирование прямо сейчас и зарегистрируйтесь на событие: https://otus.pw/pfTt/
👍6🔥3
97 вещей, о которых должен знать каждый Java-программист. Советы лучших экспертов (2023) PDF
Все, что вам нужно — это Java!
Что должен знать каждый Java-программист? Ответов на этот вопрос может быть очень много. Авторы этой книги собрали мнения нескольких десятков опытных разработчиков на Java, чтобы создать единое руководство для тех, кто только начинает свой путь в программировании.
Внутри вы найдете подробные инструкции по основным темам, касающимся работы с Java:
• Функциональность Java Virtual Machine.
• Методы тестирования кода.
• Набор инструментов Java Development Kit.
• Особенности языка.
• Архитектура программного обеспечения.
И еще — советы от экспертов и их истории профессионального развития в программировании на Java!
Все, что вам нужно — это Java!
Что должен знать каждый Java-программист? Ответов на этот вопрос может быть очень много. Авторы этой книги собрали мнения нескольких десятков опытных разработчиков на Java, чтобы создать единое руководство для тех, кто только начинает свой путь в программировании.
Внутри вы найдете подробные инструкции по основным темам, касающимся работы с Java:
• Функциональность Java Virtual Machine.
• Методы тестирования кода.
• Набор инструментов Java Development Kit.
• Особенности языка.
• Архитектура программного обеспечения.
И еще — советы от экспертов и их истории профессионального развития в программировании на Java!
👍22❤5🔥5
Что такое «сервлет»?
Сервлет является интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.
Большинство необходимых для создания сервлетов классов и интерфейсов содержатся в пакетах
Основные методы сервлета:
•
•
•
•
•
Сервлет является интерфейсом, реализация которого расширяет функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Хотя сервлеты могут обслуживать любые запросы, они обычно используются для расширения веб-серверов.
Большинство необходимых для создания сервлетов классов и интерфейсов содержатся в пакетах
javax.servlet и javax.servlet.http
.Основные методы сервлета:
•
public void init(ServletConfig config) throws ServletException
запускается сразу после загрузки сервлета в память;•
public ServletConfig getServletConfig()
возвращает ссылку на объект, который предоставляет доступ к информации о конфигурации сервлета;•
public String getServletInfo()
возвращает строку, содержащую информацию о сервлете, например: автор и версия сервлета;•
public void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException
вызывается для обработки каждого запроса;•
public void destroy()
выполняется перед выгрузкой сервлета из памяти.👍24🔥4❤3🎉1
В этом видео рассказывается о том, что такое фрактальный шум, и для чего он применяется. В частности, речь идет о процедурной генерации изображений.
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java. Так же в процессе написания кода затрагивается алгоритм билинейной интерполяции, который необходим для реализации базового шума.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Алгоритм генерации фрактального шума.
В этом видео рассказывается о том, что такое фрактальный шум, и для чего он применяется. В частности, речь идет о процедурной генерации изображений.
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java.…
Разбираем простой алгоритм генерации фрактального шума и пишем его реализацию на языке программирования Java.…
👍14
Да, это абсолютно реально, если у вас есть хоть какой-то опыт в программировании. Освойте инструмент, который позволит вам создавать приложения для iOS и Android.
С помощью технологии Flutter, под началом опытного преподавателя-практика, на бесплатном открытом уроке «Создаем умный будильник с интеграцией с Google Fit» от OTUS.
— поговорим о механизмах обмена данными между Flutter-приложением и нативным кодом;
— сделаем приложение будильника, которое будет отслеживать сон, включать сигнал в подходящее время и отправлять информацию о режиме сна в Google Fit.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
Pro Jakarta EE 10: Open Source Enterprise Java-based Cloud-native Applications Development (2023) True PDF. ePUB
Welcome to your in-depth professional guide to the open source Eclipse Jakarta EE 10 platform. This book will help you build more complex native enterprise Java-based cloud and other applications that can run in corporate and other mission-critical settings. The majority of the key Jakarta EE 10 APIs or features are dissected in this book, including JSF, JSP, JPA, CDI, REST, Microprofiles, WebSockets, and many more. Along the way, various open source Apache, Eclipse, and other projects are integrated and used for more complete workflows and treatment in general
Jakarta EE 10 comes with a significant number of improvements over Java EE 9 technologies and adopts a series of new technologies. This book starts out with a concise development procedure proposal and shows NetBeans as an alternative IDE to Eclipse.
Welcome to your in-depth professional guide to the open source Eclipse Jakarta EE 10 platform. This book will help you build more complex native enterprise Java-based cloud and other applications that can run in corporate and other mission-critical settings. The majority of the key Jakarta EE 10 APIs or features are dissected in this book, including JSF, JSP, JPA, CDI, REST, Microprofiles, WebSockets, and many more. Along the way, various open source Apache, Eclipse, and other projects are integrated and used for more complete workflows and treatment in general
Jakarta EE 10 comes with a significant number of improvements over Java EE 9 technologies and adopts a series of new technologies. This book starts out with a concise development procedure proposal and shows NetBeans as an alternative IDE to Eclipse.
👍13🔥3❤1
Лучшие практики для Java-приложений в Kubernetes
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков.
Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.
Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.
Читать статью
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков.
Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.
Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.
Читать статью
Teletype
Лучшие практики для Java-приложений в Kubernetes
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы...
🔥12👍5❤1
Предметно-ориентированное проектирование в Enterprise Java (2020) PDF
В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования.
В начальных главах описывается эталонная реализация проекта Cargo Tracker - создание монолитного приложения с использованием платформы Jakarta EE. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CQRS и Event Sourcing (ES); основной рабочей средой является Axon Framework.
В книге подробно рассматриваются реализации шаблонов предметно-ориентированного проектирования с применением различных инструментальных средств и рабочих программных сред из Enterprise Java Space. При таком подходе читатель получает завершенную картину и возможность практического применения любого из этих средств в процессе предметно-ориентированного проектирования.
В начальных главах описывается эталонная реализация проекта Cargo Tracker - создание монолитного приложения с использованием платформы Jakarta EE. Затем рассматривается полный процесс преобразования монолитного приложения в архитектуру, основанную на микросервисах. В заключительных главах демонстрируется создание версии приложения с использованием шаблонов CQRS и Event Sourcing (ES); основной рабочей средой является Axon Framework.
👍11❤5🔥2☃1
Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
• Загрузка класса сервлета — когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов его конструктора без параметров.
• Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletConfig для этого сервлета и внедряет его через
• Обработка запросов — после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новый поток и вызывает метод service() путем передачи ссылки на объекты ответа и запроса.
• Удаление - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова
Таким образом, сервлет создаётся при первом обращении к нему и живёт на протяжении всего времени работы приложения (в отличии от объектов классов, которые уничтожаются сборщиком мусора после того, как они уже не используются) и весь жизненный цикл сервлета можно описать как последовательность вызова методов:
•
•
•
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
• Загрузка класса сервлета — когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов его конструктора без параметров.
• Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletConfig для этого сервлета и внедряет его через
init()
метод. Это и есть место где сервлет класс преобразуется из обычного класса в сервлет.• Обработка запросов — после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новый поток и вызывает метод service() путем передачи ссылки на объекты ответа и запроса.
• Удаление - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова
destroy()
метода.Таким образом, сервлет создаётся при первом обращении к нему и живёт на протяжении всего времени работы приложения (в отличии от объектов классов, которые уничтожаются сборщиком мусора после того, как они уже не используются) и весь жизненный цикл сервлета можно описать как последовательность вызова методов:
•
public void init(ServletConfig config)
– используется контейнером для инициализации сервлета. Вызывается один раз за время жизни сервлета.•
public void service(ServletRequest request, ServletResponse response)
– вызывается для каждого запроса. Метод не может быть вызван раньше выполнения init()
метода.•
public void destroy()
– вызывается для уничтожения сервлета (один раз за время жизни сервлета).👍17❤3🔥2
🔥 Переходи на новый уровень в Java и разнообразь свою работу!
Пройди тест по Java и проверь как хорошо ты знаешь язык.
Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь масстер-класс от преподавателя
👉 ПРОЙТИ ТЕСТИРОВАНИЕ
Пройди тест по Java и проверь как хорошо ты знаешь язык.
Ответишь — пройдешь на продвинутый курс «Java Developer. Professional» от OTUS по специальной цене + получишь масстер-класс от преподавателя
👉 ПРОЙТИ ТЕСТИРОВАНИЕ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍6❤3🔥2
JAVA FROM EPAM (2020)
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE. В книге рассматриваются основы языка Java и концепции объектно-ориентированного и функционального программирования. Также изложены аспекты применения библиотек классов языка Java, включая файлы, коллекции, Stream API, сетевые и многопоточные приложения, а также взаимодействие с СУБД и ХМL. В конце каждой главы даются теоретические вопросы по изученной главе, тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы с кратким описанием технологий Log4J2 и TestNG.
Пособие предназначено для программистов, начинающих и продолжающих изучение технологий Java SE. В книге рассматриваются основы языка Java и концепции объектно-ориентированного и функционального программирования. Также изложены аспекты применения библиотек классов языка Java, включая файлы, коллекции, Stream API, сетевые и многопоточные приложения, а также взаимодействие с СУБД и ХМL. В конце каждой главы даются теоретические вопросы по изученной главе, тестовые вопросы по материалу главы и задания для выполнения. В приложениях приведены дополнительные материалы с кратким описанием технологий Log4J2 и TestNG.
👍15😁3🔥2
В каком случае требуется переопределять метод service()?
Метод
Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода
Метод
service()
переопределяется, когда необходимо, чтобы сервлет обрабатывал все запросы (и GET
, и POST
) в одном методе.Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода
service()
, который в зависимости от поступившего запроса вызывает или метод doGet()
или метод doPost()
.👍9🔥2
Ответьте на 10 вопросов
🟢 Пройти тестирование
— «ksqlDB - анализируем потоки на SQL»
— «Kafka Streams»
— «Место Kafka в событийно-ориентированных системах»
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
SOLID в деталях: Принцип единственной ответственности
В серии роликов "SOLID в деталях" я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.
В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его трактовках и их практическом применении.
В серии роликов "SOLID в деталях" я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.
В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его трактовках и их практическом применении.
👍26🔥3
Cyberduck — это бесплатный FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure и OneDrive и клиент передачи файлов OpenStack Swift для Mac и Windows.
Language: Java
💥Stars: 2601
📝Forks: 264
https://github.com/iterate-ch/cyberduck
Language: Java
💥Stars: 2601
📝Forks: 264
https://github.com/iterate-ch/cyberduck
GitHub
GitHub - iterate-ch/cyberduck: Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and…
Cyberduck is a libre FTP, SFTP, WebDAV, Amazon S3, Backblaze B2, Microsoft Azure & OneDrive and OpenStack Swift file transfer client for Mac and Windows. - iterate-ch/cyberduck
👍7🔥3❤2
Техника «10 тестов в день» – одна из самых эффективных в изучении Java.
Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.
➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.
Подписывайтесь и качайте свои скиллы: @javatasks
Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.
➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.
Подписывайтесь и качайте свои скиллы: @javatasks
👍9❤2🔥2☃1