Меня зовут Головач Иван, я буду уже второй раз вести спецкурс-вебинар «Multicore programming in Java». В этой статье предлагаю на рассмотрение программу курса и наиболее полезные ссылки по вопросам многопоточности в Java.
Кратко о курсе: стартует 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
Литература к модулю
- Литература по «железу» (для старта)
- Литература по «железу» (для серьезных людей)
- Литература по 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
- Пул потоков + 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
Литература к модулю
- Литература по java.util.concurrent (для старта)
- Литература по java.util.concurrent (для серьезных людей)
Модуль #3: Fork/Join Framework + Parallel Streams
Программа модуля
- Fork/Join Framework
- Решаем задачи в стиле рекурсивного параллелизма
- Идиомы и типичные задачи
- Fork/Join Framework — что «под капотом»
- Parallel Streams
- Java 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: GolovachCourses
email: GolovachCourses@gmail.com
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий