Программа и материалы курса «Multicore programming in Java»
Добрый день.Меня зовут Головач Иван, я буду уже второй раз вести спецкурс-вебинар «Multicore programming in Java». В этой статье предлагаю на рассмотрение программу курса и наиболее полезные ссылки по вопросам многопоточности в Java.Кратко о курсе: стартует 1 сентября, ведется в режиме вебинаров дважды в неделю (понедельник + четверг) в 19.00–22.00 (по московскому времени), состоит из 16 лекций по 2.5 часа (=40 лекционных часов), рассчитан на Java Middle.
1. Модуль #1: Между hardware и New JMM1.1 Программа модуля1.2 Литература к модулю2. Модуль #2: java.util.concurrent2.1 Программа модуля2.2 Литература к модулю3. Модуль #3: Fork/Join Framework + Parallel Streams3.1 Программа модуля3.2 Литература к модулю4. Модуль #4: «Неклассические архитектуры»4.1 Программа модуля4.2 Литература к модулю
Модуль #1: Между hardware и New JMMПрограмма модуля«Железо«Архитектура современных процессоров, кэши Memory barriers, read/write reordering, протоколы когерентности кэшей «Математика»/Java Memory ModelNew 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 Литература к модулюЛитература по «железу» (для старта) Литература по «железу» (для серьезных людей) Литература по Java Memory Model (для старта) Литература по Java Memory Model (для серьезных людей) Модуль #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 Пул потоков + FutureExecutors, ExecutorService, ThreadPoolExecutor, ScheduledExecutorService, ScheduledThreadPoolExecutor Callable, Future, чего не хватает j.u.c.Future Ядро j.u.c: AbstractQueuedSynchronizer + LockSupportВнутреннее устройство j.u.c.AQS Строим свои примитивы на j.u.c.AQS + LockSupport Литература к модулюЛитература по java.util.concurrent (для старта) Литература по java.util.concurrent (для серьезных людей) Модуль #3: Fork/Join Framework + Parallel Streams Программа модуляFork/Join FrameworkРешаем задачи в стиле рекурсивного параллелизма Идиомы и типичные задачи Fork/Join Framework — что «под капотом» Parallel StreamsJava 8 — работаем с данными через java.util.Stream java.util.Stream.parallel () — что «под капотом» Литература к модулюЛитература по Fork/Join Framework (для старта) Литература по Fork/Join Framework (для серьезных людей) Литература по Parallel Streams (для старта) Модуль #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 Литература к модулюЛитература по неблокирующим алгоритмам (для старта) Литература по неблокирующим алгоритмам (для серьезных людей) Литература по архитектуре на основе передачи сообщений (для старта) Литература по архитектуре на основе передачи сообщений (для серьезных людей) Литература по Persistent Data Structures (для старта) Литература по Persistent Data Structures (для серьезных людей) Общая литература В предыдущих раздела я рассматривал ссылки по конкретным темам конкретных модулей, однако, есть три очень хороших книги, которые стоит буквально читать целиком. Не хотелось «раздергивать их на главы», вот ониКонтакты Стоимость курса— при оплате до 9 августа — 375$— при оплате до 16 августа — 400$— при оплате до 23 августа — 425$— при оплате до 30 августа — 450$Я занимаюсь онлайн обучением Java (вот курсы программирования) и публикую часть учебных материалов в рамках переработки курса Java Core. Видеозаписи лекций в аудитории Вы можете увидеть на youtube-канале, возможно, видео канала лучше систематизировано в этой статье.
На все вопросы с удовольствием отвечу по следующим контактам (или в комментариях)skype: GolovachCoursesemail: GolovachCourses@gmail.com