[#] Проблема использования CompletableFuture в нескольких потоках и её решение
habrabot(difrex,1) — All
2017-04-09 16:00:04


В Java 8 появился новый класс `CompletableFuture`, который позволяет удобно писать асинхронный код.
При использовании `CompletableFuture` из нескольких потоков я столкнулся с его неочевидным поведением, а именно с тем, что callbacks на нём могут выполнятся совсем не в тех потоках, как ожидалось. Об этом и о том, как мне удалось решить проблему — я и расскажу в этой статье.

Мною разрабатывался асинхронный, неблокирующийся однопоточный клиент к серверу, который использовал потоконебезопасные структуры данных. Тесты проходили без проблем, но benchmarks иногда падали c `ConcurrentModificationException` на внутренних структурах однопоточного клиента.
[Читать дальше →][1]

[1]: https://habrahabr.ru/post/325730/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut