JAVA CONCURRENCY AND MULTITHREADING: THE COMPLETE COURSE
What you'll learn
- Learn how threads communicate
- You will understand thread states
- You will know exactly why deadlocks happen
- You will know when to use volatile and when to use the synchronized keyword
- You will know how to interrupt a thread
- You will know what is the most important pattern in multithreading
- You will see the difference between implicit and explicit locks
- You will discover the rules to create immutable classes
- You will learn all different types of liveness failures
- You will learn what are the 3 solutions to race conditions and data races
- You will see how to improve performances using parallel computing
- You will learn the difference between real and apparent concurrency
- You will learn about the 3 main weakness of thread management and the reason for using thread pools
- You will learn how to deal with interrupts in the right way
- You will learn what is a thread-safe object
- You will see all dangers of non-atomic operations
- You will see how unary operators can be non-atomic
- You will learn a simple rule to prevent any deadlocks
- You will learn two ways to create concurrent collections
- You will learn what is lock striping
- You will see how reentrant locks work and what recursion has to do with it
- You will learn what is the work-stealing algorithm
- You will use a blocking queue
- You will learn what is the Compare And Swap (CAS) algorithm
- You will learn about unmodifiable collections
- You will see how to use ThreadLocal variables
- You will see how to avoid contention
- You will find out the benefits of ThreadLocalRandom over the Random class
- You will learn how to use primitives in an atomic way
- You will learn about future objects
- You will use a semaphore
- You will know when to use a latch and when to use a barrier, or which implementation to pick up
- You will see how to use conditions to manage a queue
- You will find out the thread-safe equivalent of each collection
- You will know how to use a Phaser
- You will use an Exchanger
- You will see ContDownLatch and CyclicBarrier in practice
- You will understand how producer and consumer work
- You will use the Fork/Join framework to do high-performance operations in a recursive way
- You will understand livelock and starvation
- You will use ExecutorService with Runnable and Callable
- You will learn how to wait for a thread to complete
- You will learn what volatile has to do with caching
- You will understand why ReentrantReadWriteLock has two locks and not one
- You will learn how to use conditions with external locks
- Basic knowledge of Java: you don't need to be an expert. As long as you know the fundamentals, I will take care of the rest.
- Basic knowledge of Eclipse: I don't expect you to be an expert, but just to know how to start a new project.
This is a complete course about Java Multithreading. If you want to learn more about concurrency in Java, you are in the right place! This is the course for you!
In this course, you will learn all secrets and tricks about multithreading. You will see in practice how each feature works, with straight to the point examples, and no-frills. You will see with your own eyes how things work, rather than having to believe in my own words.
I spent my last 20 years in IT as a consultant and I can now deliver these concepts in the most effective way. I designed this course like a journey for you, and I filled it up with a lot of visual content, as learning shouldn't be boring. I believe in visual-learning and when you see something, you can hardly forget it.
After this course, you will be able to build your own multithreading applications with absolute confidence and you will be able to better understand someone else's code, being more aware of what is behind every technical choice. You will be able to develop more bug-free code and you will be able to improve performances with parallel computing. Every section is like a piece of a puzzle that at the end is going to build the big picture, which will give you more understanding and certainty.
This course is completely hands-on and filled with programming challenges. There are 28 projects that you can download, modify and try by yourself.
If you just know the basics about java, you are welcome, as I made things very simple for you. And if you are an expert, you are welcome too, as you will learn more advanced features and add the missing pieces .
A recent version of Eclipse. In the course I'm using the version 2020-06, but any recent version will work fine.
A recent version of Java. In the course I'm using Java 14, but any versions from Java 8 included onwards will work fine.
Extra things that come with this course:
28 projects for Eclipse
Zip files for each project
GitHub links for each project (optional for who knows Git)
Quick reference documents, to review key concepts.
Plenty of quizzes.
Videos with plenty of images and diagrams to learn key concepts.
Plenty of screencasts with demonstrations.
Udemy Money back guarantee
I'm sure you will enjoy the course and you will learn a lot out of it. I guarantee I will do my best to help you get through it and get the most from it. But if, for any reasons, you feel otherwise or you change your mind: on each Udemy course there is a 30 day money-back guarantee! So, there is nothing to risk anyway!
Who this course is for:
- Any IT professionals that wants to become an expert on multithreading in Java.
- Anyone willing to learn more about multithreading.
- Anyone preparing for interviews, as a refresher.
I'm Davis. I'm a freelance Java developer based in London. I have been in IT for the last 20 years, and I really love to teach. I worked with many of the leading companies in the finance, banking, telecommunication, media and gambling sectors.
I'm here to help you reach your goals!