What You’ll Uncover in Extreme Java Concurrency Performance
Extreme Java – Concurrency Performance
This course could possibly be your best studying expertise ever! It’s aimed on the busy Java skilled who desires to shortly be taught and apply new necessities on core Java matters. All matters have been completely researched by Dr Heinz Kabutz, well-known in over 145 international locations for his Java Specialists’ E-newsletter .
Extreme Java – Concurrency Performance is just concurrency course endorsed by Brian Goetz, creator of the perfect-vendor Java Concurrency in Apply. Our course is loosely based mostly on Goetz’ glorious e book, however tailored for contemporary Java.
Through the course we use the brand new Java 8 syntax for lambdas and streams, making the code extra readable. You’ll find out about threading, efficiency, evaluate-and-swap non-blocking constructs, rubbish collectors and lots of different matters that it is possible for you to to shortly apply in your individual work. We can even cowl all related constructs present in Java 8, comparable to StampedLock, LongAdder, parallel streams and lots of extra. As a facet impact, you’ll get acquainted with Java 8 lambdas and streams.
Please take a look at the define to see all of the matters coated. Through the coaching, you’ll all the time get an opportunity to check out what you will have realized in rigorously thought out workout routines. It will provide help to perceive and shortly internalize what you will have simply realized.
Is that this course for you?
College students who’ve efficiently accomplished this course, can anticipate the next outcomes:
All through the course, we use the brand new Java 8 syntax. The primary final result would thus be an understanding of how lambdas and streams work in Java 8.
College students achieve a superb understanding of why threads are essential and what the dangers are. They learn to share objects safely, together with visibility issues. Additionally they grasp security strategies of thread confinement, stack confinement and object confinement. By means of this, they learn to design a thread-protected class.
They are going to know the distinction between a synchronized and a concurrent assortment and when to make use of which one. That is significantly essential to have the ability to write excessive-efficiency code that scales properly.
They might perceive how a blocking queue can be utilized to construct producer shopper programs and what the varied blocking queues are in Java.
They might understand how Semaphore, CountDownLatch and Phaser works.
College students would learn to use the thread pool executors to run duties asynchronously. They might additionally learn to configure these, together with how to deal with an sudden variety of duties and the way the varied settings work together.
They are going to learn to break up a big duties into smaller duties by selecting good process boundaries, leading to duties which are homogeneous and unbiased.
They might learn to cleanly cancel duties which were ed by utilizing interruptions and risky boolean fields.
College students would learn the way the Fork/Be a part of Pool works by evaluating it to a standard single-threaded recursive algorithm. They can even get a possibility to refactor a chunk of Fork/Be a part of Code to make use of parallel streams as an alternative, with the intention to see how Java 8 could make coding a bit simpler.
College students would know tips on how to detect and resolve liveness points, comparable to impasse, livelock and rivalry.
Get instantly obtain Extreme Java – Concurrency Performance
They might additionally know tips on how to discover and resolve efficiency bottlenecks, particularly in threaded code.
They might understand how ReentrantLock, ReentrantReadWriteLock and the brand new Java 8 StampedLock work and the way we will use that to jot down environment friendly code utilizing optimistic strategies.
They might know tips on how to write their very own synchronizers when wanted, by creating state-dependent lessons.
College students would perceive what atomic lessons are and know strategies to make use of them to construct environment friendly non-blocking lessons that provide higher efficiency below rivalry.
They might perceive the commonest rubbish assortment algorithms: throughput, concurrent and G1 and in addition tips on how to tune each to offer finest efficiency.
They might know tips on how to uncover efficiency bottlenecks in an utility and in addition tips on how to resolve these. They might additionally learn the way profilers can be utilized to search out bottlenecks and the function of microbenchmarks in confirming these.
All through the course, a robust emphasis is positioned on the sensible utility of studying. Every pupil wants to finish a set of workout routines to show that they’ve understood the fabric.
After profitable completion of the course and all of the workout routines, college students qualify for a “course completion certificate” much like the next:
Your Teacher
Dr Heinz M. Kabutz
Dr Heinz M. Kabutz
Heinz Kabutz is the creator of The Java Specialists’ E-newsletter, a publication loved by tens of hundreds of Java consultants in over 145 international locations. His e book “Dynamic Proxies (in German)” was #1 Bestseller on Amazon.de in Fachbücher für Informatik for about 5 minutes till Amazon mounted their algorithm. Because of a supportive mom, he has now offered 5 copies.
Heinz’s Java Specialists’ e-newsletter is stuffed with amusing anecdotes of life on the Island of Crete. He is a well-liked speaker in any respect the perfect Java conferences all over the world, and in addition at among the worst. He teaches Java programs in school rooms all over the world, the place his prime goal is to make completely positive that none of his college students go to sleep. He isn’t all the time profitable.
Course Curriculum
Sources – Slides & Workout routines
ExtremeJavaConcurrency-2.1 Slides
Train Recordsdata
01 – Introduction
How the course happened (5:06)
Questions and workout routines (11:17)
Historical past of concurrency (4:08)
Advantages of threads (9:46)
Dangers of threads (8:19)
Threads are all over the place (3:58)
Brief Java 7 & 8 primer (23:15)
Workout routines (4:54)
Train Walkthrough: Organising your IDE (5:27)
Train Walkthrough: Annotating Individuals (4:11)
02 – Thread Security
Stack vs heap reminiscence (9:58)
Synchronization, Latent defects (5:25)
Atomicity (9:05)
Visibility (8:37)
Confinement (7:37)
Immutability (15:54)
Designing a thread-protected class (8:48)
Workout routines (4:19)
Train Walkthrough: Thread confined DateFormat (4:10)
Train Walkthrough: Stack confined DateFormat (2:10)
Train Walkthrough: Object confined DateFormat (1:31)
Train Walkthrough: New DateTimeFormatter (2:46)
Train Walkthrough: ByteGenerator (5:32)
03 – Constructing Blocks
Synchronized collections (13:07)
Concurrent collections (8:38)
Livelock with ConcurrentHashMap.computeIfAbsent() (10:06)
CopyOnWrite collections (10:45)
BlockingQueue & producer-shopper (15:57)
Semaphore (5:23)
CountDownLatch (4:42)
Phaser (7:45)
Workout routines (2:26)
Train Walkthrough: ConcurrentModificationException (19:57)
Train Walkthrough: PriorityBlockingQueue (12:36)
04 – Process Execution
Introduction (4:36)
The executor framework (8:44)
ScheduledExecutorService (7:22)
Executor lifecycle (6:32)
Discovering exploitable parallelism (7:20)
Callable and Future (6:02)
CompletionService (6:50)
CompletableFuture (15:53)
Utilizing parallel streams (6:34)
Workout routines (1:44)
Train Walkthrough: Parallel factorizer (9:41)
Train Walkthrough: Parallel stream factorizer (4:27)
05 – Cancellation
Get instantly obtain Extreme Java – Concurrency Performance
Introduction & Motivation (11:25)
Cooperative vs preemptive (5:05)
Insurance policies in coping with InterruptedException (13:55)
Code pattern with Future.cancel(true) (11:55)
FutureTask life cycle & Java 8 streams (7:09)
Timed duties & non-interruptible duties (7:17)
Workout routines (0:57)
Train Walkthrough: Make the factorizer cancelable (7:35)
06 – Making use of Thread Swimming pools
Sizing thread swimming pools, compute vs IO duties (12:39)
Mixing CPU and IO intensive duties (3:35)
Thread creation value amortization (23:59)
Fastened vs cached thread pool configurations (6:47)
Saturation insurance policies & thread factories (6:47)
Workout routines (3:03)
Train Walkthrough: ThreadPoolSupplier (5:50)
Train Walkthrough: Thread Pool MBean (6:16)
Train Walkthrough: Sizing ThreadPoolExecutor (4:07)
07 – Fork/Be a part of Framework
Introduction (3:55)
ForkJoinPool and ForkJoinTask (6:16)
Parallelizing Fibonacci with Fork:Be a part of (13:15)
ManagedBlocker (17:04)
Canceling a process and abstract (4:26)
Workout routines (7:26)
Train Walkthrough: Puzzle solver with ForkJoin (14:53)
Train Walkthrough: Streams as an alternative of ForkJoin (13:11)
08 – Avoiding Liveness Hazards
Introduction (2:32)
Deadlocks (10:15)
Lock ordering with System.identityHashCode() (9:51)
Advantages of open calls (7:01)
Impasse in java.util.Vector (8:11)
Avoiding and diagnosing deadlocks (18:21)
Livelocks (7:36)
Workout routines (4:15)
Train Walkthrough: Remedy deadlocks by way of lock ordering (3:47)
Train Walkthrough: Discover and remove impasse (11:16)
Train Walkthrough: Bonus impasse puzzle (3:21)
09 – Testing Concurrent Packages
Introduction (6:55)
Automated tooling (7:22)
Bulk updates (13:14)
Repairing the race situation (4:01)
Testing for efficiency (5:43)
Workout routines (3:53)
Train Walkthrough: HandoverQueue check (15:43)
Train Walkthrough: LinkedTransferQueue check (7:18)
10 – Performance and Scalability
Introduction (7:12)
Amdahl’s & Little’s legal guidelines (9:13)
Prices launched by context switching (12:46)
Lowering lock rivalry (6:21)
Lock splitting & lock striping (6:32)
Monitoring CPU utilization to identify rivalry (7:23)
11 – Express Locks
Introduction (0:56)
AutoCloseable locks (8:05)
Avoiding deadlocks utilizing tryLock() (3:14)
Performance synchronized vs ReentrantLock (3:33)
When to make use of ReentrantLock (5:22)
ReentrantReadWriteLock (6:06)
StampedLock from Java 8 (13:57)
Workout routines (2:33)
Train Walkthrough: Higher WalkingCollection (7:58)
Train Walkthrough: tryLock() for fixing deadlocks (5:57)
Train Walkthrough: StampedLock with IntList (22:24)
12 – Constructing Customized Synchronizers
Introduction (3:15)
Managing state dependence (10:37)
Utilizing situation queues (12:20)
Express situation objects (8:55)
Workout routines (1:30)
Train Walkthrough: FutureResultIterable (17:31)
13 – Atomic Variables and Nonblocking Synchronization
Introduction (9:27)
CompareAndSwap & VarHandles (23:45)
Shared cache strains & solar.misc.Contended (20:00)
Atomic variable lessons (6:41)
Nonblocking algorithms (6:04)
Workout routines (4:15)
Train Walkthrough: Make an atomic BankAccount (8:35)
14.1 – Reminiscence
Introduction (4:26)
Rubbish assortment (11:08)
Throughput collector (6:38)
-XX:+PrintFlagsFinal (15:38)
ConcurrentMarkSweep (5:49)
G1 (8:30)
Heap sizing (18:44)
Workout routines (1:56)
Train Walkthrough: Tune completely different rubbish collectors (10:16)
14.2 – References
Introduction (2:29)
SoftReference (16:40)
WeakReference (31:53)
PhantomReference (12:16)
Workout routines (2:07)
Train Walkthrough: FailFastCollection with WeakReferences (3:22)
15.1 – Tuning Course of
Introduction (1:35)
Huge features shortly (12:14)
The Field (4:39)
Shoppers of CPU (2:54)
Microbenchmarking (7:11)
Workout routines (2:44)
Train Walkthrough: Microbenchmark instance (16:12)
15.2 – JIT and HotSpot
Get instantly obtain Extreme Java – Concurrency Performance
Simply-in-time compiler (12:23)
Hotspot and tiered compilation (8:28)
Workout routines (5:23)
Train Walkthrough: Examine JIT settings (7:36)
Train Walkthrough: Profiling with JVisualVM (3:11)
15.3 – Typical Downside Areas
Introduction (1:22)
Object creation (5:12)
Strings (37:49)
Common expressions & exceptions (2:53)
Sooner loops & different tips (12:41)
Workout routines (1:32)
Train Walkthrough: Make a quick Validator (20:29)
16. Conclusion
That is it, of us! (8:47)
Continuously Requested Questions
How lengthy do I’ve entry to a completely paid course?
How does lifetime entry sound? After enrolling, you will have limitless entry to this course for so long as you want – throughout any and all units you personal. Moreover, if we transfer to a different platform, we’ll give you a free switch of your account for all of the programs that you’ve got bought.
How lengthy do I’ve entry to a “Limited Access” course?
Every “Limited Access” course has a time restrict after which you lose entry to the course materials. The time is sufficient for a centered pupil to complete all the course.
What’s the distinction between a subscription, paying in installments and an outright buy?
With a subscription, you by no means personal the rights to the fabric. In case your card is declined otherwise you cancel your subscription, you lose entry to the course. The cash you will have paid up to now is misplaced. Paying in installments is a bit higher. You pay for five or 10 months after which after getting accomplished your installments you will have lifetime entry to the course. The most secure is an outright buy, the place you pay all the course in a single quantity. There is no such thing as a threat of dropping entry.
Can I pay by way of PayPal?
Sure, you may for outright purchases, however not for recurring funds comparable to paying by installments or subscriptions.
Can I get an EU VAT Bill?
Completely. First off, remember to enter the VAT quantity within the applicable discipline throughout the cost course of. Then contact us for an EU VAT Bill. Please inform us the receipt quantity for which you want the bill.
Might I share my login particulars with my colleagues?
Sadly not. The phrases of utilization are for a single license. Teachable tracks your progress by the curriculum, so you will not understand how a lot you will have watched. We provide a 30% low cost on 50 licenses or extra by one firm. Please contact us for bulk licensing.
Get instantly obtain Extreme Java – Concurrency Performance
Might we use the course for operating in-home programs?
You could, so long as every of the scholars within the class has a sound license for that course. For instance, a whole lot of corporations run lunch time Design Patterns examine teams utilizing our materials. That is an efficient option to be taught. Please contact us for bulk licensing.
What if I’m sad with the course?
We’d by no means need you to be sad! In case you are unhappy along with your buy, contact us within the first 30 days and we offers you a full refund and deregister you from the course.
When does the course and end?
The course s now and by no means ends! It’s a fully self-paced on-line course – you resolve whenever you and whenever you end. We do advocate placing time apart and setting targets to finish the course.
Can I watch the course offline throughout my commute?
Teachable have an iOS app that allows you to watch offline. Android just isn’t supported sadly.
Learn extra: https://archive.is/OZfGq
IMPORTANT: This whole “Extreme Java – Concurrency Performance” is totally downloadable and out there to you instantly (In case of a damaged hyperlink, we’ll renew your hyperlink shortly). Your endurance is appreciated.