Pull to refresh

Программа и материалы курса «Multicore programming in Java»

Reading time5 min
Views34K
Добрый день.
Меня зовут Головач Иван, я буду уже второй раз вести спецкурс-вебинар «Multicore programming in Java». В этой статье предлагаю на рассмотрение программу курса и наиболее полезные ссылки по вопросам многопоточности в Java.

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

Кратко о курсе: стартует 1 сентября, ведется в режиме вебинаров дважды в неделю (понедельник + четверг) в 19.00-22.00 (по московскому времени), состоит из 16 лекций по 2.5 часа (=40 лекционных часов), рассчитан на Java Middle.

1. Модуль #1: Между hardware и New JMM
1.1 Программа модуля
1.2 Литература к модулю
2. Модуль #2: java.util.concurrent
2.1 Программа модуля
2.2 Литература к модулю
3. Модуль #3: Fork/Join Framework + Parallel Streams
3.1 Программа модуля
3.2 Литература к модулю
4. Модуль #4: “Неклассические архитектуры”
4.1 Программа модуля
4.2 Литература к модулю


Модуль #1: Между hardware и New JMM



Программа модуля
  • “Железо”
    • Архитектура современных процессоров, кэши
    • Memory barriers, read/write reordering, протоколы когерентности кэшей
  • “Математика”/Java Memory Model
    • New JMM — описание «на пальцах»
    • Какие гарантии дают Thread.start()/join(), volatile, final, CAS, lazySet, weakCompareAndSet, классы из j.u.c
    • Формальная спецификация New JMM: happens-before edge, commitment protocol
  • Примитивы/конструкции
    • Double checked locking (broken), safe publishing
    • synchronized+Object.wait()/notify()/notifyAll() — как использовать, какие гарантии, как реализовано в HotSpot
    • Реализуем свои: Dekker's algorithm, Peterson's algorithm, Lamport Bakery algotithm


Литература к модулю


Модуль #2: java.util.concurrent



Программа модуля
  • Многопоточные коллекции
    • BlockingQueue-s
    • ConcurrentMap-s: ConcurrentHashMap, ConcurrentSkipListMap
    • Сopy-on-write structures: CopyOnWriteArrayList, CopyOnWriteArraySet
  • “Синхронизаторы”
    • Lock, Condition, ReentrantLock, ReentrantReadWriteLock, Semaphore
    • CountDownLatch, CyclicBarrier, Exchanger, Phaser
  • Пул потоков + Future
    • Executors, ExecutorService, ThreadPoolExecutor, ScheduledExecutorService, ScheduledThreadPoolExecutor
    • Callable, Future, чего не хватает j.u.c.Future
  • Ядро j.u.c: AbstractQueuedSynchronizer + LockSupport
    • Внутреннее устройство j.u.c.AQS
    • Строим свои примитивы на j.u.c.AQS + LockSupport


Литература к модулю


Модуль #3: Fork/Join Framework + Parallel Streams



Программа модуля
  • Fork/Join Framework
    • Решаем задачи в стиле рекурсивного параллелизма
    • Идиомы и типичные задачи
    • Fork/Join Framework — что «под капотом»
  • Parallel Streams
    • Java 8 — работаем с данными через java.util.Stream
    • java.util.Stream.parallel() — что «под капотом»


Литература к модулю


Модуль #4: “Неклассические архитектуры”



Программа модуля
  • Non-blocking algorithm
    • Пакет j.u.c.atomic: AtomicXXX, AtomicXXXArray, AtomicXXXFieldUpdater, AtomicStampedReference, AtomicMarkableReference
    • Классификация: blocking, non-blocking, lock-free, wait-free, obstruction free
    • Неблокирующие реализации основных структур данных: stack, queue, deque, hashtable, treemap
  • Архитектуры на основе передачи сообщений (Akka)
    • Библиотека Akka
    • Основные шаблоны, типовые архитектуры
    • Плюсы и минусы архитектур на основе передачи сообщений
  • Software Transactional Memory (STM)
    • Библиотека clojure.lang.*
    • Плюсы и минусы архитектур на основе транзакционной памяти
  • Persistent Data Structures
    • Плюсы и минусы персистентных структур данных
    • Персистентные реализации основных структур данных
    • Библиотека pcollections


Литература к модулю


Общая литература


В предыдущих раздела я рассматривал ссылки по конкретным темам конкретных модулей, однако, есть три очень хороших книги, которые стоит буквально читать целиком. Не хотелось «раздергивать их на главы», вот они


Контакты


Стоимость курса
— при оплате до 9 августа — 375$
— при оплате до 16 августа — 400$
— при оплате до 23 августа — 425$
— при оплате до 30 августа — 450$

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

На все вопросы с удовольствием отвечу по следующим контактам (или в комментариях)
skype: GolovachCourses
email: GolovachCourses@gmail.com
Tags:
Hubs:
Total votes 39: ↑28 and ↓11+17
Comments1

Articles

Information

Website
www.golovachcourses.com
Registered
Founded
Employees
2–10 employees
Location
Украина