Good day.
My name is Golovach Ivan, I will conduct a
second course-webinar “Multicore programming in Java”
for the second time . This article offers a course program and the most useful threading references in Java for review.
I also teach
Scala for Java Developers on the udemy.com online education platform (equivalent to Coursera / EdX).
Briefly about the course: starts on September 1, is conducted in webinar mode twice a week (Monday + Thursday) from 7 to 10 pm (Moscow time), consists of 16 lectures of 2.5 hours each (= 40 lecture hours), calculated on Java Middle.
')
1. Module # 1: Between hardware and New JMM1.1 Module program1.2 Literature to module2. Module # 2: java.util.concurrent2.1 Module program2.2 Literature to module3. Module # 3: Fork / Join Framework + Parallel Streams3.1 Module program3.2 Literature to module4. Module # 4: “Non-classical architectures”4.1 Module program4.2 Literature to moduleModule # 1: Between hardware and New JMM
Module program- "Iron"
- Architecture of modern processors, caches
- Memory barriers, read / write reordering, cache coherence protocols
- “Mathematics” / Java Memory Model
- New JMM - description "on the fingers"
- What guarantees give Thread.start () / join (), volatile, final, CAS, lazySet, weakCompareAndSet, classes from juc
- New JMM Formal Specification: happens-before edge, commitment protocol
- Primitives / constructions
- Double checked locking (broken), safe publishing
- synchronized + Object.wait () / notify () / notifyAll () - how to use, what guarantees, as implemented in HotSpot
- We sell our own: Dekker's algorithm, Peterson's algorithm, Lamport Bakery algotithm
Literature to the module- Literature on "iron" (for start)
- Literature on "iron" (for serious people)
- Java Memory Model Literature (for start)
- Java Memory Model Literature (for serious people)
Module # 2: java.util.concurrent
Module program- Multithreaded collections
- BlockingQueue's
- ConcurrentMap-s: ConcurrentHashMap, ConcurrentSkipListMap
- Copy-on-write structures: CopyOnWriteArrayList, CopyOnWriteArraySet
- “Synchronizers”
- Lock, Condition, ReentrantLock, ReentrantReadWriteLock, Semaphore
- CountDownLatch, CyclicBarrier, Exchanger, Phaser
- Thread pool + future
- Executors, ExecutorService, ThreadPoolExecutor, ScheduledExecutorService, ScheduledThreadPoolExecutor
- Callable, Future, what is missing jucFuture
- Core juc: AbstractQueuedSynchronizer + LockSupport
- Inside jucAQS
- We build our primitives on jucAQS + LockSupport
Literature to the module- Literature on java.util.concurrent (for start)
- Literature on java.util.concurrent (for serious people)
Module # 3: Fork / Join Framework + Parallel Streams
Module program- Fork / Join Framework
- Solve problems in the style of recursive parallelism
- Idioms and typical tasks
- Fork / Join Framework - that "under the hood"
- Parallel streams
- Java 8 - working with data through java.util.Stream
- java.util.Stream.parallel () - that "under the hood"
Literature to the module- Fork / Join Framework Literature (for start)
- Fork / Join Framework Literature (for serious people)
- Literature on Parallel Streams (for start)
Module # 4: “Non-Classical Architectures”
Module program- Non-blocking algorithm
- Package jucatomic: AtomicXXX, AtomicXXXArray, AtomicXXXFieldUpdater, AtomicStampedReference, AtomicMarkableReference
- Classification: blocking, non-blocking, lock-free, wait-free, obstruction free
- Non-blocking implementations of the main data structures: stack, queue, deque, hashtable, treemap
- Message-Based Architecture (Akka)
- Akka Library
- Basic patterns, typical architectures
- Pros and cons of message-based architectures
- Software Transactional Memory (STM)
- Library clojure.lang. *
- Pros and cons of transactional memory architectures
- Persistent Data Structures
- Pros and cons of persistent data structures
- Persistent implementations of underlying data structures
- Pcollections library
Literature to the module- Literature on non-blocking algorithms (for start)
- Literature on non-blocking algorithms (for serious people)
- Literature on the basis of messaging (for start)
- Message-Based Architecture Literature (for serious people)
- Persistent Data Structures literature (for start)
- Persistent Data Structures Literature (for serious people)
General literature
In the previous section, I looked at references on specific topics of specific modules, however, there are three very good books that are literally worth reading in their entirety. I didn’t want to “pull them into chapters,” so they
Contacts
Course fee
- if paid before August 9 - $ 375
- if paid before August 16 - $ 400
- if paid before August 23 - $ 425
- if paid before August 30 - $ 450
I do Java online training (here
are the programming courses ) and publish some of the training materials as part of the reworking
of the Java Core course . You can see videos of lectures in the audience on the
youtube channel , perhaps the video of the channel is better organized in
this article .
I will be happy to answer all questions with the following contacts (or in the comments)
skype: GolovachCourses
email: GolovachCourses@gmail.com