Как стать автором
Обновить
24
Карма
0
Рейтинг
Алексей Кайгородов @rfq

JavaSE developer

Анатомия backpressure в реактивных потоках

Время прочтения 7 мин
Просмотры 8.4K
Java *Параллельное программирование *
🔥 Технотекст 2020
Читая многочисленные статьи по теме реактивных потоков, читатель может прийти к выводу, что:

  • backpressure это круто
  • backpressure доступно только в библиотеках, реализующих спецификацию reactive streams
  • эта спецификация настолько сложна, что не стоит и пытаться ее реализовать самому

В этой статье я попытаюсь показать, что:

  • backpressure — это очень просто
  • для реализации асинхронного backpressure достаточно сделать асинхронный вариант семафора
  • при наличии реализации асинхронного семафора, интерфейс org.reactivestreams.Publisher реализуется в несколько десятков строк кода
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 7

Асинхронное программирование на примерах: реконструкция методов java.util.concurrent.CompletableFuture

Время прочтения 7 мин
Просмотры 17K
Java *
Туториал

Для чего нужна реконструкция, если исходный код этого класса открыт?


Хотя бы потому, что там под капотом высокооптимизированный, трудночитаемый код, изучение которого мало что дает в педагогическом плане.


Поэтому мы воссоздадим семантику операций по их спецификациям, и напишем функционально эквивалентный, понятный и читаемый код, хотя, возможно, и не самый экономный по расходу памяти и времени процессора.

Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 0

Путеводитель по методам класса java.util.concurrent.CompletableFuture

Время прочтения 7 мин
Просмотры 74K
Java *Параллельное программирование *
Появившийся в Java8 класс CompletableFuture — средство для передачи информации между параллельными потоками исполнения. По существу это блокирующая очередь, способная передать только одно ссылочное значение. В отличие от обычной очереди, передает также исключение, если оно возникло при вычислении передаваемого значения.

Класс содержит несколько десятков методов, в которых легко потеряться. Данная статья классифицирует эти методы по нескольким признакам, чтобы в них было легко ориентироваться.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 13

Распараллеливание с минимальными правками в коде

Время прочтения 1 мин
Просмотры 12K
Java *Проектирование и рефакторинг *Параллельное программирование *
Пусть у вас есть метод, вызываемый во многих местах, и вызов которого хочется сделать параллельным. Это можно сделать, не меняя код вызова метода и код самого метода. Нужно только создать расширение объемлющего класса, и изменить код создания объекта.

Было:
class Service {
  public void longJob(Object arg) {...}
}
...
Service s=new Service();
...

s.longJob(arg);


Стало:
class Service {
  public void longJob(Object arg) {...}
}
class ServiceWrapper extends Service {
...
}
...
Service s=new ServiceWrapper() ;
...

s.longJob(arg);

Читать дальше →
Всего голосов 37: ↑22 и ↓15 +7
Комментарии 37

Акторы как частный случай dataflow

Время прочтения 1 мин
Просмотры 1.3K
Программирование *
Тема акторов в последние годы набирает популярность и некоторым авторам представляется как хит
сезона, хотя само понятие уходит корнями в 70 годы. Особенно усердствуют эрланговцы — одни
заголовки чего стоят — На передовой дизайна виртуальных машин, прямо-таки вспоминаются заголовки советских газет.
Читать дальше →
Всего голосов 14: ↑2 и ↓12 -10
Комментарии 4

Как работает многозадачность

Время прочтения 2 мин
Просмотры 7.3K
Программирование *
Из песочницы
В ответ на Как вы считаете, как работает многозадачность на 80386?. По моему мнению, ни один из предлагавшихся вариантов ответа не верен, а верен такой:

Процессор ничего не знает ни о потоках, ни о процессах. Он просто последовательно выполняет инструкции, пока не случится прерывание. Обработка прерывания сводится к вызову процедуры, не заданному в исполняемом коде. Эта процедура (являющаяся частью операционной системы) производит при необходимости переключение процессов и потоков. Чаще всего процедура прерывания просто делает выход и прерванный поток продолжает свою работу, ничего не заметив.
Читать дальше →
Всего голосов 93: ↑63 и ↓30 +33
Комментарии 48

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность