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

JavaSE developer

Отправить сообщение

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

Время на прочтение7 мин
Количество просмотров13K
Читая многочисленные статьи по теме реактивных потоков, читатель может прийти к выводу, что:

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

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

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

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

Время на прочтение7 мин
Количество просмотров19K

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


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


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

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

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

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

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

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

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

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

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

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

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

Информация

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