ForkJoinPool — это специализированный пул потоков в Java, предназначенный для выполнения задач, которые можно разделить на более мелкие подзадачи и объединить результаты их выполнения. Этот пул является частью пакета java.util.concurrent и основан на принципе разделяй и властвуй (divide and conquer).
ForkJoinPool позволяет эффективно выполнять параллельные вычисления, автоматически распределяя задачи между доступными потоками и оптимизируя их выполнение. Он используется для задач, которые могут быть:
- Рекурсивно разделены на подзадачи.
- Выполнены параллельно.
- Объединены в один итоговый результат.
🔹 Как работает?
Большая задача разбивается на несколько подзадач, каждая из которых может быть выполнена независимо.
Каждая подзадача отправляется в пул потоков для выполнения.
После выполнения подзадачи результаты объединяются для получения итогового значения.
🔹 Пример использования:
Для работы с ForkJoinPool используются два ключевых абстрактных класса:
- RecursiveTask<V> — для задач, которые возвращают результат.
- RecursiveAction — для задач, которые ничего не возвращают.
Пример: нахождение суммы чисел массива с помощью RecursiveTask:
class SumTask extends RecursiveTask<Integer> {
private int[] array;
private int start, end;
public SumTask(int[] array, int start, int end) {
this.array = array;
this.start = start;
this.end = end;
}
@Override
protected Integer compute() {
if (end - start <= 10) {
int sum = 0;
for (int i = start; i < end; i++) {
sum += array[i];
}
return sum;
} else {
int mid = (start + end) / 2;
SumTask leftTask = new SumTask(array, start, mid);
SumTask rightTask = new SumTask(array, mid, end);
leftTask.fork();
int rightResult = rightTask.compute();
int leftResult = leftTask.join();
return leftResult + rightResult;
}
}
}
public class ForkJoinExample {
public static void main(String[] args) {
ForkJoinPool forkJoinPool = new ForkJoinPool();
int[] array = new int[100];
for (int i = 0; i < array.length; i++) {
array[i] = i + 1;
}
SumTask task = new SumTask(array, 0, array.length);
int result = forkJoinPool.invoke(task);
System.out.println("Сумма: " + result);
}
}
🔹 Преимущества ForkJoinPool:
- Work-Stealing алгоритм:
Потоки берут задачи из очередей других потоков, если у них нет своей работы. Это минимизирует простои.
- Поддержка параллельных вычислений:
Упрощает разработку алгоритмов, которые можно разделить и выполнить параллельно.
- Автоматическая настройка потоков:
Количество потоков настраивается автоматически в зависимости от доступных процессорных ядер (Runtime.getRuntime().availableProcessors()).
🔹 Когда использовать?
- Для задач, которые можно рекурсивно разбить на подзадачи.
- Для вычислительных задач, таких как сортировка, поиск, суммирование, обработка больших данных.
- Когда требуется высокая производительность в многопоточной среде.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4🎉2❤1👏1
❤️ Дома (удалёнка)
🔥 В офисе
👍🏼 Гибрид
⚡️ Коворкинг или кафе
😁 Другое (пишите в комментарии)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤122🔥37👍33😁8⚡2
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом кода?
Anonymous Quiz
2%
0
50%
1
34%
2
10%
Ошибка компиляции
5%
RuntimeException
👍15🎉5❤1🔥1👾1
🦑👨💻 Программист в «Игре в кальмара»: каковы твои шансы выжить?
Ежедневно управляешь потоками, выстраиваешь архитектуру и пишешь идеальный код? Но каковы твои шансы, если код станет реальностью?
Остаться в живых или получить NPE? Все зависит от тебя!
📌 Пройти тест
Ежедневно управляешь потоками, выстраиваешь архитектуру и пишешь идеальный код? Но каковы твои шансы, если код станет реальностью?
Остаться в живых или получить NPE? Все зависит от тебя!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍2🤔2🥱1🌚1
🎉 Конечно, тесты – это основа качественного кода
🔥 Иногда пишу, но не всегда
👍🏼 Только если проект сложный
🌚 Никогда не пишу тесты
😁 Что такое тесты?
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉54🔥38😁25🌚16👍5
Вот интересные тренды java разработки этого года:
А Вы готовы ворваться в новый 2025 год?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥6👏2
Сертификат на обучение от Proglib Academy! Это крутой подарок для тех, кто интересуется IT, хочет освоить новую профессию
Почему наши курсы — хороший презент:
Сертификат оформляется за пару минут, и даже не нужно ломать голову над упаковкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥱1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🤖🎓 SmartClass: как научить AI проверять домашки программистов
Автоматизация рутинных задач — один из главных трендов в IT, но как насчет проверки домашек? Представьте себе систему, которая не только оценивает код студентов, но и помогает им понять свои ошибки, словно опытный наставник. Звучит как фантастика? В статье рассказывается, как проект SmartClass воплощает эту идею в реальность, используя возможности AI. Узнайте, какие технологии лежат в основе, с какими трудностями сталкиваются разработчики и как это меняет обучение программированию.
📎 Подробнее о том, как AI помогает проверять домашние задания
Автоматизация рутинных задач — один из главных трендов в IT, но как насчет проверки домашек? Представьте себе систему, которая не только оценивает код студентов, но и помогает им понять свои ошибки, словно опытный наставник. Звучит как фантастика? В статье рассказывается, как проект SmartClass воплощает эту идею в реальность, используя возможности AI. Узнайте, какие технологии лежат в основе, с какими трудностями сталкиваются разработчики и как это меняет обучение программированию.
📎 Подробнее о том, как AI помогает проверять домашние задания
🎉5👍1🔥1
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Существует 4 типа ссылок, которые определяют, как объект будет обрабатываться сборщиком мусора (Garbage Collector).
Это ссылки, которые используются по умолчанию.
String strongRef = new String("Strong Reference");
Объект, на который указывает сильная ссылка, никогда не будет удален сборщиком мусора, пока существует эта ссылка.
Используйте, когда объект нужен в течение всего времени выполнения.
Создаются с помощью класса SoftReference. Soft ссылка удерживает объект в памяти, пока в JVM достаточно свободной памяти. Если памяти не хватает, объект будет удален.
SoftReference<String> softRef = new SoftReference<>(new String("Soft Reference"));
String softObj = softRef.get();
Удобны для реализации кэшей. Например, если объект можно восстановить, но не хочется держать его в памяти постоянно.
Сборщик мусора удаляет объекты, на которые ссылаются мягкие ссылки, только в случае нехватки памяти.
Создаются с помощью класса WeakReference. Объект, на который ссылается слабая ссылка, удаляется сборщиком мусора, как только на него больше нет сильных или мягких ссылок.
WeakReference<String> weakRef = new WeakReference<>(new String("Weak Reference"));
String weakObj = weakRef.get();
Часто используются в структурах данных, таких как WeakHashMap, для предотвращения удержания ненужных объектов.
Удобны для создания ссылок на временные объекты.
Создаются с помощью класса PhantomReference. Эти ссылки используются исключительно для отслеживания, когда объект будет удален сборщиком мусора.
PhantomReference<String> phantomRef = new PhantomReference<>(new String("Phantom Reference"), new ReferenceQueue<>());
Метод get() у фантомной ссылки всегда возвращает null.
Объекты, на которые ссылаются фантомные ссылки, добавляются в ReferenceQueue, когда сборщик мусора их удаляет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🎉2🔥1
💻 Эффективное проектирование программных систем
Правильная архитектура программного обеспечения помогает создавать устойчивые и масштабируемые приложения, которые легко дорабатывать и поддерживать.
Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
Правильная архитектура программного обеспечения помогает создавать устойчивые и масштабируемые приложения, которые легко дорабатывать и поддерживать.
Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
👍1🔥1🎉1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Изначально SQLite идеально подходит для транзакционных операций (OLTP). Но аналитические запросы (OLAP), включающие сложные джойны, были её слабым местом. SQLite использует Nested Loop Join — простой, но неэффективный метод, где каждое совпадение требует "дорогих" операций в B-дереве.
Исследователи из Университета Висконсин-Мэдисон предложили использовать Bloom-фильтры — лёгкие и эффективные структуры данных, которые заранее отсекают ненужные строки для джойнов.
🔗 Читайте подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2🥰2👏1🎉1
Если вы считаете, что Java — это только про старые добрые корпоративные приложения, то вы сильно недооцениваете её развитие. Новые версии языка привносят невероятно полезные возможности, которые упрощают жизнь разработчикам: от работы с данными до оптимизации кода.
В статье от экспертов LANIT разбираются ключевые фишки Java 20 и обсуждается, почему сейчас — идеальное время, чтобы начать или продолжить изучение этого языка. Хотите оставаться на пике технологий и быть востребованным?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5😁3🎉1
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Младший разработчик
Удалёнка / Офис (Москва), Doczilla
Подробнее
▪️ Junior Java Developer
Офис (Минск), Программные решения плюс
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Middle Java developer (SoftWLC)
Удалёнка / Гибрид (Новосибирск), Eltex
Подробнее
▪️ Java Core разработчик (middle)
Удалёнка (РФ), ДИКСИ
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java Developer
Удалёнка, DatsTeam
Подробнее
▪️ Разработчик Java Senior (микросервисы), на территории РФ
Удалёнка (РФ), ИНГОССТРАХ БАНК
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Младший разработчик
Удалёнка / Офис (Москва), Doczilla
Подробнее
▪️ Junior Java Developer
Офис (Минск), Программные решения плюс
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Middle Java developer (SoftWLC)
Удалёнка / Гибрид (Новосибирск), Eltex
Подробнее
▪️ Java Core разработчик (middle)
Удалёнка (РФ), ДИКСИ
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java Developer
Удалёнка, DatsTeam
Подробнее
▪️ Разработчик Java Senior (микросервисы), на территории РФ
Удалёнка (РФ), ИНГОССТРАХ БАНК
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
🤔4❤3👍3🎉2
This media is not supported in your browser
VIEW IN TELEGRAM
Proglib рассказывает про любимый язык програмирования в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰7👍3🥱2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
➡️ Впервые за всю историю количество кода, написанных человечеством, достигнет триллиона (по оценкам GitHub).
— Это наш общий след в цифровой эпохе.
➡️
ИИ-системы начали писать больше кода, чем люди.
— Возможно, 2025 станет годом, когда искусственный интеллект впервые решит баг, который люди не могут исправить десятилетиями.
➡️
2025-й — год открытого кода. Всё больше крупных компаний выпускают свои продукты в open-source.
— Готовьтесь к большому числу коллабов и открытий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3😁2🌚1👾1
Друзья, праздники — это время отдохнуть от работы, найти вдохновение новые идеи. А что может быть лучше, чем новогодние праздники с фильмами и сериалами на IT-тематику? Вот небольшой список, который точно поднимет вам настроение👨💻
💻 1. Социальная сеть
История создания Facebook — идеальный фильм, чтобы вдохновиться предпринимательством.
📡 2. Мистер Робот
Кибербезопасность, хакинг и тайны больших корпораций. Этот сериал втянет вас в мир технологий с первых минут.
🎅 3. Пиксели
Если хотите чего-то лёгкого и забавного — тут герои сражаются с инопланетянами в виде культовых аркадных игр.
📱 4. Силиконовая долина
Комедия для тех, кто знает, что такое запуск MVP, битва за инвесторов и дедлайны.
🤖 5. Из машины
Когда обычный тест на искусственный интеллект превращается в философское путешествие.
❄️ 6. Ральф против интернета
Для всей семьи. Красивый мультфильм о том, как устроен интернет изнутри.
👾 7. Матрица
Классика, которая не стареет. Если вдруг вы пропустили (или давно не пересматривали), самое время выбрать между красной и синей таблеткой.
Пусть 2025 будет полон новых знаний и интересных проектов, а баги останутся в прошлом году.
С наступающим Новым Годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉11❤6👍2