Уютное сообщество джавистов
2.04K subscribers
31 photos
41 links
Уютное сообщество джавистов - это хорошие материалы,задачки,
туториалы для проверки знаний и обратная связь от соратников по изучению.

@viktorreh
Download Telegram
🚫 Ключевые проблемы многопоточности

🔵 Состояние гонки (Race Conditions):

Ситуация, когда несколько потоков пытаются одновременно читать и записывать общие данные, что приводит к непредсказуемым результатам.
Пример: Представьте, что два человека пытаются одновременно снять деньги с одного банковского счета. Без должной координации они могут снять больше денег, чем доступно на счете.

🔵 Взаимные блокировки (Deadlocks):

Ситуация, когда два или более потока застревают в ожидании друг друга для освобождения ресурсов, что приводит к тупиковой ситуации.
Пример: Два человека держат предметы, которые нужны друг другу, и оба ждут, пока другой первый отдаст свой предмет.

🔵 Ошибки конкуренции (Concurrency Bugs):

Ошибки, возникающие из-за неправильной обработки взаимодействия потоков, часто проявляющиеся как случайные проблемы.
Пример: Если два работника пишут в один и тот же файл без координации, их работа может перемешаться.

🔵 Прерывание потока (Thread Interruption):

Основная проблема заключается в том, что сигнал на прерывание лишь уведомляет поток о необходимости остановки, но сам поток должен обработать этот сигнал и завершить свою работу самостоятельно.
Пример: Если вам нужно, чтобы рабочий остановился, вы посылаете ему сигнал "стоп". Но нет гарантий, что это случится.

🔵 Ошибки согласованности памяти (Memory Consistency Errors):

Ситуация, когда разные потоки имеют устаревшее или несогласованное представление о разделяемой памяти.
Пример: Если один человек обновляет общий документ, а другие видят старую версию, они могут работать с неверной информацией.

🔵 Соперничество за ресурсы (Resource Contention):

Ситуация, когда несколько потоков конкурируют за один и тот же ограниченный ресурс, что приводит к задержкам.
Пример: Если несколько работников одновременно пытаются воспользоваться одним принтером, им приходится ждать своей очереди.

🔵 Голодание (Starvation):

Ситуация, когда потоку постоянно отказывают в доступе к ресурсам из-за приоритета других потоков.
Пример: Если одного работника постоянно обходят вниманием в пользу других, он никогда не сможет выполнить свою работу.

👉 Уютное сообщество джавистов #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot and Angular

Автор:
Devlin Basilan Duldulao
Год издания: 2022

#java #spring #en

Скачать книгу
Learning Java

Автор:
Loy Marc, Niemeyer Patrick, Leuck Daniel
Год издания: 2020

#java #en

Скачать книгу
The Java Module System

Автор:
Nicolai Parlog
Год издания: 2019

#java #en

Скачать книгу
Mastering Java: A Beginner's Guide

Автор:
Sufyan bin Uzayr
Год издания: 2022

#java #en

Скачать книгу
🤫 Секреты эффективной работы с ArrayList

ArrayList — это один из самых популярных классов для работы с динамическими массивами в Java. Но чтобы использовать его по максимуму, стоит учесть несколько важных моментов:

1️⃣ Уменьшайте количество расширений: Каждый раз, когда ArrayList превышает свою текущую емкость, он создает новый массив большего размера. Это может замедлить работу, особенно при больших объемах данных. Чтобы избежать этого, инициализируйте ArrayList с заранее рассчитанной емкостью, если примерно знаете объем данных.

2️⃣ Избегайте частых вставок и удалений в середине списка: Операции вставки и удаления элементов в середине ArrayList требуют сдвига всех последующих элементов. Если такие операции критичны, рассмотрите использование LinkedList.

3️⃣ Используйте метод trimToSize(): Если ваш ArrayList больше не будет изменяться, вызов метода trimToSize() освободит неиспользуемую память, оптимизируя использование ресурсов.

4️⃣ Итерации важны: Используйте цикл for-each или метод forEach() для итерации по ArrayList. Они обеспечивают более читаемый и безопасный код. Но если нужен доступ по индексу, стандартный цикл for — ваш выбор.

5️⃣ Будьте осторожны с автобоксингом: При работе с примитивными типами, такими как int, ArrayList автоматически упаковывает их в Integer. Это может привести к лишним затратам памяти. Если производительность критична, используйте специализированные классы, такие как IntArrayList из библиотеки fastutil.

👉 Уютное сообщество джавистов #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Interactive Object-Oriented
Programming in
Java

Автор:
Vaskaran Sarcar
Год издания: 2020

#java #en

Скачать книгу
Web Development Toolkit
for
Java Developers

Автор:
Dr. Nirali Dabhi
Год издания: 2023

#java #spring #en

Скачать книгу
97 вещей, о которых должен знать
каждый Jаvа-программист

Автор:
Кевлин Хенни
Год издания: 2023

#java #ru

Скачать книгу
Классические задачи
Computer Science
на языке
Java

Автор:
Дэвид Копец
Год издания: 2022

#java #ru

Скачать книгу
Designing Hexagonal Architecture with Java

Автор:
Davi Vieira
Год издания: 2023

#java #en

Скачать книгу
От Java к Kotlin

Авторы:
Дункан Макгрегор, Нэт Прай
Год издания: 2023

#java #kotlin #ru

Скачать книгу
Java: руководство для начинающих. 9 изд

Автор:
Герберт Шилдт
Год издания: 2023

#java #ru

Скачать книгу
Java: устранение проблем

Автор:
Лауренциу Спилкэ
Год издания:
2023

#java #ru

Скачать книгу
Гид Java-разработчика.
Проектно-ориентированный подход


Автор:
Рауль-Габриэль Урма
Год издания:
2022

#java #ru

Скачать книгу
Java. Оптимизация программ

Автор:
Эванс Бенджамин,
Джеймс Гоф, Ньюланд Крис
Год издания: 2021

#java #ru

Скачать книгу