Конкурентное программирование на Scala
Здесь можно купить книгу "Конкурентное программирование на Scala " в печатном или электронном виде. Также, Вы можете прочесть аннотацию, цитаты и содержание, ознакомиться и оставить отзывы (комментарии) об этой книге.
Место издания: Москва
ISBN: 978-5-97060-572-1
Страниц: 342
Артикул: 95126
Возрастная маркировка: 16+
Краткая аннотация книги "Конкурентное программирование на Scala"
Scala – современный, мультипарадигменный язык программирования, позволяющий описывать типичные шаблоны программирования компактнее, выразительнее и безопаснее. Scala прекрасно сочетает в себе черты объектно-ориентированных и функциональных языков. Книга начинается с введения в основы конкурентного программирования в JVM и описания модели памяти в Java, а после демонстрирует основные строительные блоки для реализации конкурентных вычислений, такие как атомарные переменные, пулы потоков и конкурентные структуры данных. Затем рассматриваются разные высокоуровневые абстракции конкуренции, каждая из которых ориентирована на решение определенного класса задач, при этом затрагиваются самые последние достижения в поддержке асинхронного программирования. Также охватываются некоторые полезные шаблоны и способы использования описываемых приемов. В заключение дается краткий обзор применения разных библиотек поддержки конкуренции и демонстрируется возможность их совместного использования. Издание предназначено разработчикам с опытом программирования на Scala, но без опыта конкурентного и асинхронного программирования.
Содержание книги "Конкурентное программирование на Scala "
Предисловие
Об авторе
Благодарности
О технических рецензентах
Вступление
Глава 1. Введение
Конкурентное программирование
Краткий обзор традиционных подходов к организации конкурентного выполнения
Современные парадигмы конкуренции
Преимущества языка Scala
Начальные сведения
Выполнение программ на Scala
Основы Scala
Обзор новых особенностей в Scala 2.12
В заключение
Упражнения
Глава 2. Конкуренция в JVM и модель памяти в Java
Процессы и потоки
Создание и запуск потоков
Атомарное выполнение
Переупорядочение
Мониторы и синхронизация
Взаимоблокировки
Защищенные блокировки
Прерывание потоков и корректная остановка
Изменчивые переменные
Модель памяти в Java
Неизменяемые объекты и финальные поля
В заключение
Упражнения
Глава 3. Традиционные строительные блоки конкурентных программ
Объекты Executor и ExecutionContext
Атомарные примитивы
Атомарные переменные
Неблокирующее программирование
Явная реализация блокировок
Проблема ABA
Ленивые значения
Конкурентные коллекции
Конкурентные очереди
Конкурентные множества и словари
Конкурентные итерации
Собственные конкурентные структуры данных
Реализация неблокирующего конкурентного пула
Создание и обработка процессов
В заключение
Упражнения
Глава 4. Асинхронное программирование с объектами Future и Promise
Объекты Future
Запуск асинхронных вычислений
Объекты Future и обратные вызовы
Объекты Future и исключения
Использование типа Try
Фатальные исключения
Композиция функций в объектах Future
Объекты Promise
Преобразование программных интерфейсов на основе обратных вызовов
Расширение программного интерфейса объектов Future
Отмена асинхронных вычислений
Объекты Future и блокировка выполнения
Ожидание завершения Future
Блокировка в асинхронных вычислениях
Библиотека Scala Async
Альтернативные фреймворки асинхронных вычислений
В заключение
Упражнения
Глава 5. Параллельные коллекции данных
Краткий обзор коллекций в Scala
Использование параллельных коллекций
Иерархия классов параллельных коллекций
Настройка уровня параллелизма
Измерение производительности в JVM
Особенности параллельных коллекций
Непараллелизуемые коллекции
Непараллелизуемые операции
Побочные эффекты в параллельных операциях
Недетерминированные параллельные операции
Коммутативность и ассоциативность операторов
Совместное использование параллельных и конкурентных коллекций
Слабо согласованные итераторы
Реализация собственных параллельных коллекций
Сплиттеры
Комбинаторы
В заключение
Упражнения
Глава 6. Конкурентное программирование с Reactive Extensions
Создание объектов Observable
Объекты Observable и исключения
Контракт наблюдаемого объекта
Реализация собственных объектов Observable
Создание наблюдаемых объектов из объектов Future
Подписки
Объединение объектов Observable
Вложенные наблюдаемые объекты
Обработка ошибок в наблюдаемых объектах
Планировщики Rx
Использование собственных планировщиков в приложениях с графическим интерфейсом
Субъекты и реактивное программирование сверху вниз
В заключение
Упражнения
Глава 7. Программная транзакционная память
Недостатки атомарных переменных
Использование программной транзакционной памяти
Транзакционные ссылки
Использование инструкции atomic
Комбинирование транзакций
Взаимодействие транзакций и побочные эффекты
Транзакции с одной операцией
Вложенные транзакции
Транзакции и исключения
Повторение транзакций
Повторения с тайм-аутами
Транзакционные коллекции
Локальные переменные транзакций
Транзакционные массивы
Транзакционные словари
В заключение
Упражнения
Глава 8. Акторы
Работа с акторами
Создание экземпляров и систем акторов
Управление необработанными сообщениями
Поведение и состояние актора
Иерархии акторов в Akka
Идентификация акторов
Жизненный цикл акторов
Взаимодействия между акторами
Шаблон «запрос»
Шаблон «пересылка»
Остановка акторов
Диспетчеризация акторов
Удаленные акторы
В заключение
Упражнения
Глава 9. Конкуренция на практике
Выбор правильных инструментов для решения конкретных задач
Объединяем все вместе – сетевой браузер файлов
Моделирование файловой системы
Интерфейс связи с сервером
Программный интерфейс навигации на стороне клиента
Пользовательский интерфейс на стороне клиента
Реализация логики клиента
Усовершенствование сетевого браузера файлов
Отладка конкурентных программ
Взаимоблокировки и отсутствие прогресса
Отладка ошибочных результатов
Отладка производительности
В заключение
Упражнения
Глава 10. Реакторы
Необходимость реакторов
Введение в фреймворк Reactors
Программа «Hello World»
Потоки событий
Жизненный цикл потока событий
Комбинирование потоков событий
Реакторы
Определение и настройка реакторов
Использование каналов
Планировщики
Жизненный цикл реактора
Службы системы реакторов
Служба журналирования
Служба времени
Служба каналов
Пользовательские службы
Протоколы
Собственная реализация протокола клиент-сервер
Стандартный протокол сервер-клиент
Протокол маршрутизации
Протокол двустороннего обмена
В заключение
Упражнения
Все отзывы о книге Конкурентное программирование на Scala
С книгой "Конкурентное программирование на Scala" читают
Внимание!
При обнаружении неточностей или ошибок в описании книги "Конкурентное программирование на Scala (автор Александр Прокопец)", просим Вас отправить сообщение на почту help@directmedia.ru. Благодарим!
и мы свяжемся с вами в течение 15 минут
за оставленную заявку