Программа Курса «Многоядерное Программирование На Java»

Добрый день.

Меня зовут Головач Иван, я руковожу небольшой образовательной компанией.

Мы помолвлены онлайн-курсы по программированию .

Я также преподаю курс «Скала для разработчиков Java» на платформе онлайн-обучения udemy.com (аналог Coursera/EdX).

хотелось бы услышать мнение сообщества

  1. Программы курса «Многоядерное программирование на Java»
  2. литература по курсу
Кратко о курсе: старт 28 апреля (в связи с майскими праздниками старт перенесен на 15 мая), проводится в режиме вебинара два раза в неделю в 19.00-22.00, состоит из 16 лекций по 2,5 часа (= 40 лекционных часов).

), к каждой лекции дается расширенное задание, предназначенное для Java Junior/Middle.

Программа курса

Модуль №1: Между аппаратным обеспечением и математикой, примитивы
  • "железо"
    • архитектура современных процессоров, кэши
    • барьеры памяти, переупорядочение чтения/записи, протоколы согласованности кэша
  • «математика»/Модель памяти Java
    • Новый JMM – описание «под рукой»
    • какие гарантии предоставляют Thread.start()/join(), Летучие, Final, CAS, lazySet, WeakCompareAndSet, классы из j.u.c?
    • официальная спецификация Новый JMM: происходит до того, как граница, протокол обязательств
  • примитивы/конструкции
    • двойная проверка блокировки (сломанная), безопасная публикация
    • синхронизированный+Object.wait()/notify()/notifyAll() — как использовать, какие гарантии, как это реализовано в HotSpot
    • Давайте реализуем наши: алгоритм Деккера, алгоритм Петерсона, алгоритм Лампорта Бейкери.

Модуль №2: java.util.concurrent (Java 5)
  • многопоточные коллекции
    • BlockingQueue-s
    • ConcurrentMap-s: ConcurrentHashMap, ConcurrentSkipListMap
    • Структуры копирования при записи: CopyOnWriteArrayList, CopyOnWriteArraySet.
  • «синхронизаторы»
    • Блокировка, Условие, ReentrantLock, ReentrantReadWriteLock, Семафор
    • CountDownLatch, CyclicBarrier, Exchanger, Phaser
  • пул потоков + будущее
    • Исполнители, ExecutorService, ThreadPoolExecutor, ScheduledExecutorService, ScheduledThreadPoolExecutor
    • Callable, Future, чего не хватает j.u.c.Future
  • ядро juc: AbstractQueuedSynchronizer + LockSupport
    • внутреннее устройство j.u.c.AQS
    • мы строим наши примитивы на j.u.c.AQS + LockSupport
Модуль № 3: Платформа Fork/Join (Java 7) + параллельные потоки (Java 8)
  • Платформа вилки/соединения
    • решение задач в стиле рекурсивного параллелизма
    • идиомы и общие задачи
    • Fork/Join Framework – что под капотом
  • Параллельные потоки
    • Java 8 — работа с данными через java.util.Stream
    • java.util.Stream.parallel() — что «под капотом»
Модуль №4: «Неклассические архитектуры»
  • Неблокирующий алгоритм
    • пакет j.u.c.atomic: AtomicXXX, AtomicXXXArray, AtomicXXXFieldUpdater, AtomicStampedReference, AtomicMarkableReference
    • классификация: блокирующая, неблокирующая, без блокировки, без ожидания, без препятствий
    • неблокирующие реализации базовых структур данных: стек, очередь, дек, хеш-таблица, древовидная карта.

  • архитектуры передачи сообщений (Akka)
    • библиотека Акка
    • базовые шаблоны, типовые архитектуры
    • Плюсы и минусы архитектур передачи сообщений
  • Программная транзакционная память (Clojure)
    • библиотека clojure.lang.*
    • плюсы и минусы транзакционных архитектур памяти
  • Постоянные структуры данных
    • Плюсы и минусы постоянных структур данных
    • постоянные реализации базовых структур данных: стек, очередь, дек, хеш-таблица, древовидная карта.

    • библиотеки: clojure.lang.*, pcollections


Литература

Книги Статьи Блоги

Контакты

Я прохожу онлайн-обучение Java (здесь курсы программирования ) и опубликовать некоторые учебные материалы в рамках доработки Курс Java Core .

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

скайп: ГоловачКурсы электронная почта: [email protected] Теги: #java #курсы по программированию #многопоточность #многоядерность #java #Алгоритмы

Вместе с данным постом часто просматривают: