Skip to content
Sale

Dr Heinz M. Kabutz – Extreme Java – Concurrency Performance

Original price was: $797.00.Current price is: $143.10.

This course could be your most productive learning experience ever! It is aimed at the busy Java professional who wants to quickly learn and apply new essentials on core Java topics. All topics have been thoroughly researched by Dr Heinz Kabutz, famous in over 150 countries for his Java Specialists’ Newsletter.

Description

Unlock your potential with the Unlock your potential with the Dr Heinz M. Kabutz - Extreme Java - Concurrency PerformanceDr Heinz M. Kabutz - Extreme Java - Concurrency Performance course for only course for only Original price was: $797.00.Original price was: $797.00.Current price is: $143.10.Current price is: $143.10. at at Giolib.comGiolib.com! Explore our comprehensive library of over 60,000 downloadable digital courses across various ! Explore our comprehensive library of over 60,000 downloadable digital courses across various Business & SalesBusiness & Sales. Get expert-led, self-paced learning at up to 80% savings. Elevate your skills today!. Get expert-led, self-paced learning at up to 80% savings. Elevate your skills today!

Dr Heinz M. Kabutz - Extreme Java - Concurrency Performance

Dr Heinz M. Kabutz – Extreme Java – Concurrency Performance

Java Concurrency in Practice

This course could be your most productive learning experience ever! It is aimed at the busy Java professional who wants to quickly learn and apply new essentials on core Java topics. All topics have been thoroughly researched by Dr Heinz Kabutz, famous in This course could be your most productive learning experience ever! It is aimed at the busy Java professional who wants to quickly learn and apply new essentials on core Java topics. All topics have been thoroughly researched by Dr Heinz Kabutz, famous in over 150 countries for his Java Specialists’ Newsletter.

Extreme Java – Concurrency Performance is only concurrency course endorsed by Brian Goetz, author of the best-seller Extreme Java – Concurrency Performance is only concurrency course endorsed by Brian Goetz, author of the best-seller Java Concurrency in Practice. Our course is loosely based on Goetz’ excellent book, but adapted for modern Java.

During the course we use the new Java 8 syntax for lambdas and streams, making the code more readable. You will learn about threading, performance, compare-and-swap non-blocking constructs, garbage collectors and many other topics that you will be able to quickly apply in your own work. We will also cover all relevant constructs found in Java 8, such as StampedLock, LongAdder, parallel streams and many more. As a side effect, you will get familiar with Java 8 lambdas and streams.During the course we use the new Java 8 syntax for lambdas and streams, making the code more readable. You will learn about threading, performance, compare-and-swap non-blocking constructs, garbage collectors and many other topics that you will be able to quickly apply in your own work. We will also cover all relevant constructs found in Java 8, such as StampedLock, LongAdder, parallel streams and many more. As a side effect, you will get familiar with Java 8 lambdas and streams.

Please look at the Please look at the outline to see all the topics covered. During the training, you will always get a chance to try out what you have learned in carefully thought out exercises. This will help you understand and quickly internalize what you have just learned.

Is this course for you?

Students who have successfully completed this course, can expect the following outcomes:Students who have successfully completed this course, can expect the following outcomes:

  1. Throughout the course, we use the new Java 8 syntax. The first outcome would thus be an understanding of how lambdas and streams work in Java 8.Throughout the course, we use the new Java 8 syntax. The first outcome would thus be an understanding of how lambdas and streams work in Java 8.
  2. Students gain a good understanding of why threads are important and what the risks are. They learn how to share objects safely, including visibility concerns. They also master safety techniques of thread confinement, stack confinement and object confinement. Through this, they learn how to design a thread-safe class.Students gain a good understanding of why threads are important and what the risks are. They learn how to share objects safely, including visibility concerns. They also master safety techniques of thread confinement, stack confinement and object confinement. Through this, they learn how to design a thread-safe class.
  3. They will know the difference between a synchronized and a concurrent collection and when to use which one. This is particularly important to be able to write high-performance code that scales well.They will know the difference between a synchronized and a concurrent collection and when to use which one. This is particularly important to be able to write high-performance code that scales well.
  4. They would understand how a blocking queue can be used to build producer consumer systems and what the various blocking queues are in Java.They would understand how a blocking queue can be used to build producer consumer systems and what the various blocking queues are in Java.
  5. They would know how Semaphore, CountDownLatch and Phaser works.They would know how Semaphore, CountDownLatch and Phaser works.
  6. Students would learn how to use the thread pool executors to run tasks asynchronously. They would also learn how to configure these, including how to cope with an unexpected number of tasks and how the various settings interact.Students would learn how to use the thread pool executors to run tasks asynchronously. They would also learn how to configure these, including how to cope with an unexpected number of tasks and how the various settings interact.
  7. They will learn how to break up a large tasks into smaller tasks by choosing good task boundaries, resulting in tasks that are homogeneous and independent.They will learn how to break up a large tasks into smaller tasks by choosing good task boundaries, resulting in tasks that are homogeneous and independent.
  8. They would learn how to cleanly cancel tasks that have been started by using interruptions and volatile boolean fields.They would learn how to cleanly cancel tasks that have been started by using interruptions and volatile boolean fields.
  9. Students would learn how the Fork/Join Pool works by comparing it to a normal single-threaded recursive algorithm. They will also get an opportunity to refactor a piece of Fork/Join Code to use parallel streams instead, in order to see how Java 8 can make coding a bit easier.Students would learn how the Fork/Join Pool works by comparing it to a normal single-threaded recursive algorithm. They will also get an opportunity to refactor a piece of Fork/Join Code to use parallel streams instead, in order to see how Java 8 can make coding a bit easier.
  10. Students would know how to detect and solve liveness issues, such as deadlock, livelock and contention.Students would know how to detect and solve liveness issues, such as deadlock, livelock and contention.
  11. They would also know how to find and solve performance bottlenecks, especially in threaded code.They would also know how to find and solve performance bottlenecks, especially in threaded code.
  12. They would know how ReentrantLock, ReentrantReadWriteLock and the new Java 8 StampedLock work and how we can use that to write efficient code using optimistic techniques.They would know how ReentrantLock, ReentrantReadWriteLock and the new Java 8 StampedLock work and how we can use that to write efficient code using optimistic techniques.
  13. They would know how to write their own synchronizers when needed, by creating state-dependent classes.They would know how to write their own synchronizers when needed, by creating state-dependent classes.
  14. Students would understand what atomic classes are and know techniques to use them to build efficient non-blocking classes that offer better performance under contention.Students would understand what atomic classes are and know techniques to use them to build efficient non-blocking classes that offer better performance under contention.
  15. They would understand the most common garbage collection algorithms: throughput, concurrent and G1 and also how to tune each one to give best performance.They would understand the most common garbage collection algorithms: throughput, concurrent and G1 and also how to tune each one to give best performance.
  16. They would know how to discover performance bottlenecks in an application and also how to solve these. They would also learn how profilers can be used to find bottlenecks and the role of microbenchmarks in confirming these.They would know how to discover performance bottlenecks in an application and also how to solve these. They would also learn how profilers can be used to find bottlenecks and the role of microbenchmarks in confirming these.
  17. Throughout the course, a strong emphasis is placed on the practical application of learning. Each student needs to complete a set of exercises to demonstrate that they have understood the material.Throughout the course, a strong emphasis is placed on the practical application of learning. Each student needs to complete a set of exercises to demonstrate that they have understood the material.

After successful completion of the course and all the exercises, students qualify for a “course completion certificate” similar to the following:After successful completion of the course and all the exercises, students qualify for a “course completion certificate” similar to the following:

Your Instructor

Dr Heinz M. Kabutz

Dr Heinz M. KabutzDr Heinz M. Kabutz

Heinz Kabutz is the author of Heinz Kabutz is the author of The Java Specialists’ Newsletter, a publication enjoyed by tens of thousands of Java experts in over 145 countries. His book “Dynamic Proxies (in German)” was #1 Bestseller on Amazon.de in Fachbücher für Informatik for about five minutes until Amazon fixed their algorithm. Thanks to a supportive mother, he has now sold 5 copies.

Heinz’s Java Specialists’ newsletter is filled with amusing anecdotes of life on the Island of Crete. He is a popular speaker at all the best Java conferences around the world, and also at some of the worst. He teaches Java courses in classrooms around the world, where his prime objective is to make absolutely sure that none of his students fall asleep. He is not always successful.Heinz’s Java Specialists’ newsletter is filled with amusing anecdotes of life on the Island of Crete. He is a popular speaker at all the best Java conferences around the world, and also at some of the worst. He teaches Java courses in classrooms around the world, where his prime objective is to make absolutely sure that none of his students fall asleep. He is not always successful.

Course Curriculum

Extreme Java – Concurrency PerformanceExtreme Java – Concurrency Performance
Resources – Slides & Exercises Resources – Slides & Exercises

ExtremeJavaConcurrency-2.1 SlidesExtremeJavaConcurrency-2.1 Slides

Exercise FilesExercise Files

01 – Introduction01 – Introduction

How the course came about (5:06)How the course came about (5:06)

Questions and exercises (11:17)Questions and exercises (11:17)

History of concurrency (4:08)History of concurrency (4:08)

Benefits of threads (9:46)Benefits of threads (9:46)

Risks of threads (8:19)Risks of threads (8:19)

Threads are everywhere (3:58)Threads are everywhere (3:58)

Short Java 7 & 8 primer (23:15)Short Java 7 & 8 primer (23:15)

Exercises (4:54)Exercises (4:54)

Exercise Walkthrough: Setting up your IDE (5:27)Exercise Walkthrough: Setting up your IDE (5:27)

Exercise Walkthrough: Annotating Persons (4:11)Exercise Walkthrough: Annotating Persons (4:11)

02 – Thread Safety02 – Thread Safety

Stack vs heap memory (9:58)Stack vs heap memory (9:58)

Synchronization, Latent defects (5:25)Synchronization, Latent defects (5:25)

Atomicity (9:05)Atomicity (9:05)

Visibility (8:37)Visibility (8:37)

Confinement (7:37)Confinement (7:37)

Immutability (15:54)Immutability (15:54)

Designing a thread-safe class (8:48)Designing a thread-safe class (8:48)

Exercises (4:19)Exercises (4:19)

Exercise Walkthrough: Thread confined DateFormat (4:10)Exercise Walkthrough: Thread confined DateFormat (4:10)

Exercise Walkthrough: Stack confined DateFormat (2:10)Exercise Walkthrough: Stack confined DateFormat (2:10)

Exercise Walkthrough: Object confined DateFormat (1:31)Exercise Walkthrough: Object confined DateFormat (1:31)

Exercise Walkthrough: New DateTimeFormatter (2:46)Exercise Walkthrough: New DateTimeFormatter (2:46)

Exercise Walkthrough: ByteGenerator (5:32)Exercise Walkthrough: ByteGenerator (5:32)

03 – Building Blocks03 – Building Blocks

Synchronized collections (13:07)Synchronized collections (13:07)

Concurrent collections (8:38)Concurrent collections (8:38)

Livelock with ConcurrentHashMap.computeIfAbsent() (10:06)Livelock with ConcurrentHashMap.computeIfAbsent() (10:06)

CopyOnWrite collections (10:45)CopyOnWrite collections (10:45)

BlockingQueue & producer-consumer (15:57)BlockingQueue & producer-consumer (15:57)

Semaphore (5:23)Semaphore (5:23)

CountDownLatch (4:42)CountDownLatch (4:42)

Phaser (7:45)Phaser (7:45)

Exercises (2:26)Exercises (2:26)

Exercise Walkthrough: ConcurrentModificationException (19:57)Exercise Walkthrough: ConcurrentModificationException (19:57)

Exercise Walkthrough: PriorityBlockingQueue (12:36)Exercise Walkthrough: PriorityBlockingQueue (12:36)

04 – Task Execution04 – Task Execution

Introduction (4:36)Introduction (4:36)

The executor framework (8:44)The executor framework (8:44)

ScheduledExecutorService (7:22)ScheduledExecutorService (7:22)

Executor lifecycle (6:32)Executor lifecycle (6:32)

Finding exploitable parallelism (7:20)Finding exploitable parallelism (7:20)

Callable and Future (6:02)Callable and Future (6:02)

CompletionService (6:50)CompletionService (6:50)

CompletableFuture (15:53)CompletableFuture (15:53)

Using parallel streams (6:34)Using parallel streams (6:34)

Exercises (1:44)Exercises (1:44)

Exercise Walkthrough: Parallel factorizer (9:41)Exercise Walkthrough: Parallel factorizer (9:41)

Exercise Walkthrough: Parallel stream factorizer (4:27)Exercise Walkthrough: Parallel stream factorizer (4:27)

05 – Cancellation05 – Cancellation

Introduction & Motivation (11:25)Introduction & Motivation (11:25)

Cooperative vs preemptive (5:05)Cooperative vs preemptive (5:05)

Policies in dealing with InterruptedException (13:55)Policies in dealing with InterruptedException (13:55)

Code sample with Future.cancel(true) (11:55)Code sample with Future.cancel(true) (11:55)

FutureTask life cycle & Java 8 streams (7:09)FutureTask life cycle & Java 8 streams (7:09)

Timed tasks & non-interruptible tasks (7:17)Timed tasks & non-interruptible tasks (7:17)

Exercises (0:57)Exercises (0:57)

Exercise Walkthrough: Make the factorizer cancelable (7:35)Exercise Walkthrough: Make the factorizer cancelable (7:35)

06 – Applying Thread Pools06 – Applying Thread Pools

Sizing thread pools, compute vs IO tasks (12:39)Sizing thread pools, compute vs IO tasks (12:39)

Mixing CPU and IO intensive tasks (3:35)Mixing CPU and IO intensive tasks (3:35)

Thread creation cost amortization (23:59)Thread creation cost amortization (23:59)

Fixed vs cached thread pool configurations (6:47)Fixed vs cached thread pool configurations (6:47)

Saturation policies & thread factories (6:47)Saturation policies & thread factories (6:47)

Exercises (3:03)Exercises (3:03)

Exercise Walkthrough: ThreadPoolSupplier (5:50)Exercise Walkthrough: ThreadPoolSupplier (5:50)

Exercise Walkthrough: Thread Pool MBean (6:16)Exercise Walkthrough: Thread Pool MBean (6:16)

Exercise Walkthrough: Sizing ThreadPoolExecutor (4:07)Exercise Walkthrough: Sizing ThreadPoolExecutor (4:07)

07 – Fork/Join Framework07 – Fork/Join Framework

Introduction (3:55)Introduction (3:55)

ForkJoinPool and ForkJoinTask (6:16)ForkJoinPool and ForkJoinTask (6:16)

Parallelizing Fibonacci with Fork:Join (13:15)Parallelizing Fibonacci with Fork:Join (13:15)

ManagedBlocker (17:04)ManagedBlocker (17:04)

Canceling a task and summary (4:26)Canceling a task and summary (4:26)

Exercises (7:26)Exercises (7:26)

Exercise Walkthrough: Puzzle solver with ForkJoin (14:53)Exercise Walkthrough: Puzzle solver with ForkJoin (14:53)

Exercise Walkthrough: Streams instead of ForkJoin (13:11)Exercise Walkthrough: Streams instead of ForkJoin (13:11)

08 – Avoiding Liveness Hazards08 – Avoiding Liveness Hazards

Introduction (2:32)Introduction (2:32)

Deadlocks (10:15)Deadlocks (10:15)

Lock ordering with System.identityHashCode() (9:51)Lock ordering with System.identityHashCode() (9:51)

Benefits of open calls (7:01)Benefits of open calls (7:01)

Deadlock in java.util.Vector (8:11)Deadlock in java.util.Vector (8:11)

Avoiding and diagnosing deadlocks (18:21)Avoiding and diagnosing deadlocks (18:21)

Livelocks (7:36)Livelocks (7:36)

Exercises (4:15)Exercises (4:15)

Exercise Walkthrough: Solve deadlocks via lock ordering (3:47)Exercise Walkthrough: Solve deadlocks via lock ordering (3:47)

Exercise Walkthrough: Find and eliminate deadlock (11:16)Exercise Walkthrough: Find and eliminate deadlock (11:16)

Exercise Walkthrough: Bonus deadlock puzzle (3:21)Exercise Walkthrough: Bonus deadlock puzzle (3:21)

09 – Testing Concurrent Programs09 – Testing Concurrent Programs

Introduction (6:55)Introduction (6:55)

Automatic tooling (7:22)Automatic tooling (7:22)

Bulk updates (13:14)Bulk updates (13:14)

Repairing the race condition (4:01)Repairing the race condition (4:01)

Testing for performance (5:43)Testing for performance (5:43)

Exercises (3:53)Exercises (3:53)

Exercise Walkthrough: HandoverQueue test (15:43)Exercise Walkthrough: HandoverQueue test (15:43)

Exercise Walkthrough: LinkedTransferQueue test (7:18)Exercise Walkthrough: LinkedTransferQueue test (7:18)

10 – Performance and Scalability10 – Performance and Scalability

Introduction (7:12)Introduction (7:12)

Amdahl’s & Little’s laws (9:13)Amdahl’s & Little’s laws (9:13)

Costs introduced by context switching (12:46)Costs introduced by context switching (12:46)

Reducing lock contention (6:21)Reducing lock contention (6:21)

Lock splitting & lock striping (6:32)Lock splitting & lock striping (6:32)

Monitoring CPU utilization to spot contention (7:23)Monitoring CPU utilization to spot contention (7:23)

11 – Explicit Locks11 – Explicit Locks

Introduction (0:56)Introduction (0:56)

AutoCloseable locks (8:05)AutoCloseable locks (8:05)

Avoiding deadlocks using tryLock() (3:14)Avoiding deadlocks using tryLock() (3:14)

Performance synchronized vs ReentrantLock (3:33)Performance synchronized vs ReentrantLock (3:33)

When to use ReentrantLock (5:22)When to use ReentrantLock (5:22)

ReentrantReadWriteLock (6:06)ReentrantReadWriteLock (6:06)

StampedLock from Java 8 (13:57)StampedLock from Java 8 (13:57)

Exercises (2:33)Exercises (2:33)

Exercise Walkthrough: Better WalkingCollection (7:58)Exercise Walkthrough: Better WalkingCollection (7:58)

Exercise Walkthrough: tryLock() for solving deadlocks (5:57)Exercise Walkthrough: tryLock() for solving deadlocks (5:57)

Exercise Walkthrough: StampedLock with IntList (22:24)Exercise Walkthrough: StampedLock with IntList (22:24)

12 – Building Custom Synchronizers12 – Building Custom Synchronizers

Introduction (3:15)Introduction (3:15)

Managing state dependence (10:37)Managing state dependence (10:37)

Using condition queues (12:20)Using condition queues (12:20)

Explicit condition objects (8:55)Explicit condition objects (8:55)

Exercises (1:30)Exercises (1:30)

Exercise Walkthrough: FutureResultIterable (17:31)Exercise Walkthrough: FutureResultIterable (17:31)

13 – Atomic Variables and Nonblocking Synchronization13 – Atomic Variables and Nonblocking Synchronization

Introduction (9:27)Introduction (9:27)

CompareAndSwap & VarHandles (23:45)CompareAndSwap & VarHandles (23:45)

Shared cache lines & sun.misc.Contended (20:00)Shared cache lines & sun.misc.Contended (20:00)

Atomic variable classes (6:41)Atomic variable classes (6:41)

Nonblocking algorithms (6:04)Nonblocking algorithms (6:04)

Exercises (4:15)Exercises (4:15)

Exercise Walkthrough: Make an atomic BankAccount (8:35)Exercise Walkthrough: Make an atomic BankAccount (8:35)

14.1 – Memory14.1 – Memory

Introduction (4:26)Introduction (4:26)

Garbage collection (11:08)Garbage collection (11:08)

Throughput collector (6:38)Throughput collector (6:38)

-XX:+PrintFlagsFinal (15:38)-XX:+PrintFlagsFinal (15:38)

ConcurrentMarkSweep (5:49)ConcurrentMarkSweep (5:49)

G1 (8:30)G1 (8:30)

Heap sizing (18:44)Heap sizing (18:44)

Exercises (1:56)Exercises (1:56)

Exercise Walkthrough: Tune different garbage collectors (10:16)Exercise Walkthrough: Tune different garbage collectors (10:16)

14.2 – References14.2 – References

Introduction (2:29)Introduction (2:29)

SoftReference (16:40)SoftReference (16:40)

WeakReference (31:53)WeakReference (31:53)

PhantomReference (12:16)PhantomReference (12:16)

Exercises (2:07)Exercises (2:07)

Exercise Walkthrough: FailFastCollection with WeakReferences (3:22)Exercise Walkthrough: FailFastCollection with WeakReferences (3:22)

15.1 – Tuning Process15.1 – Tuning Process

Introduction (1:35)Introduction (1:35)

Big gains quickly (12:14)Big gains quickly (12:14)

The Box (4:39)The Box (4:39)

Consumers of CPU (2:54)Consumers of CPU (2:54)

Microbenchmarking (7:11)Microbenchmarking (7:11)

Exercises (2:44)Exercises (2:44)

Exercise Walkthrough: Microbenchmark example (16:12)Exercise Walkthrough: Microbenchmark example (16:12)

15.2 – JIT and HotSpot15.2 – JIT and HotSpot

Just-in-time compiler (12:23)Just-in-time compiler (12:23)

Hotspot and tiered compilation (8:28)Hotspot and tiered compilation (8:28)

Exercises (5:23)Exercises (5:23)

Exercise Walkthrough: Compare JIT settings (7:36)Exercise Walkthrough: Compare JIT settings (7:36)

Exercise Walkthrough: Profiling with JVisualVM (3:11)Exercise Walkthrough: Profiling with JVisualVM (3:11)

15.3 – Typical Problem Areas15.3 – Typical Problem Areas

Introduction (1:22)Introduction (1:22)

Object creation (5:12)Object creation (5:12)

Strings (37:49)Strings (37:49)

Regular expressions & exceptions (2:53)Regular expressions & exceptions (2:53)

Faster loops & other tricks (12:41)Faster loops & other tricks (12:41)

Exercises (1:32)Exercises (1:32)

Exercise Walkthrough: Make a fast Validator (20:29)Exercise Walkthrough: Make a fast Validator (20:29)

16. Conclusion16. Conclusion

That’s it, folks! (8:47)That’s it, folks! (8:47)


Sales Page
Archive Page

Future-proof your knowledge with the Future-proof your knowledge with the Dr Heinz M. Kabutz - Extreme Java - Concurrency PerformanceDr Heinz M. Kabutz - Extreme Java - Concurrency Performance course at course at GiOlibGiOlib! Enjoy lifetime access to high-quality digital content, crafted to advance your career and personal development.! Enjoy lifetime access to high-quality digital content, crafted to advance your career and personal development.

  • Lifetime Access:Lifetime Access: Permanent access to all purchased courses. Permanent access to all purchased courses.
  • Smart Savings:Smart Savings: Benefit from prices up to 80% off original course costs. Benefit from prices up to 80% off original course costs.
  • Safe Transactions:Safe Transactions: Process your payments securely. Process your payments securely.
  • Practical Insights:Practical Insights: Gain actionable skills relevant to today's demands. Gain actionable skills relevant to today's demands.
  • Instant Availability:Instant Availability: Begin your course immediately after payment. Begin your course immediately after payment.
  • Flexible Learning:Flexible Learning: Access content effortlessly on any device. Access content effortlessly on any device.

Start expanding your horizons with Start expanding your horizons with GiOlibGiOlib!!

Cart
Back To Top