...

вторник, 25 марта 2014 г.

Программа курса «Multicore programming in Java»


сегодня в 19:41


Добрый день.

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

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



  1. программы курса «Multicore programming in Java»

  2. литературы к курсу




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



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




Модуль #1: Между “железом” и “математикой”, примитивы


  • “железо”


    • архитектура современных процессоров, кэши

    • 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 (Java 5)


  • многопоточные коллекции


    • BlockingQueue-s

    • ConcurrentMap-s: ConcurrentHashMap, ConcurrentSkipListMap

    • copy-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 (java 7) + Parallel Streams (Java 8)


  • 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 (Clojure)


    • библиотека clojure.lang.*

    • плюсы и минусы архитектур на транзакционной памяти



  • Persistent Data Structures


    • плюсы и минусы персистентных структур данных

    • персистентные реализации основных структур данных: stack, queue, deque, hashtable, treemap

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




Литература




Книги

Статьи




Блоги

Контакты




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.


Комментариев нет:

Отправить комментарий