Java Multithreading, Concurrency & Performance Optimization
If you had your own jet plane, would you drive it to the grocery store, or fly it on a tour around the world?
Today every computer and phone comes with immense computing power and multiple cores that allow for full parallelism. In this course you will go on a journey to learn all the fundamental tools you need to become a confident and successful multithreaded application developer. Using multithreading and concurrency we will learn to get the most out of our computer to truly make it fly.
Teaching PhilosophyThe course is designed to teach you "how to fish". Instead of memorizing classes, libraries or Java APIs, we will learn the fundamentals of multithreaded programming, starting from the complete basics, all the way to the very advanced topics in multithreading.
All lectures include the right theory and are accompanied by practical examples from relevant fields such as:
User Interface applications
It's a practical course that is meant to save you time. Instead of filling hours of material, I hand picked the most important topics based on my practical experience.
Target Student for this Course
Students who already have some experience and basic knowledge in programming in Java.
Students who want to acquire multithreaded, parallel programming and concurrency skills, in a short period of time.
Students who are interested in performance optimizations and getting good foundation in the above mentioned topics.
Students who want to take their career to the next level. Whether you are a
Newly graduate and you're looking to land a dream job.
A professional engineer who wants to become a better programmer and improve your skillset.
A freelancer who wants to develop his/her own project and is looking to learn how to write efficient multithreaded code.
Then this course is for YOU.
My passion towards multithreading and concurrency started in college where I worked on a highly scalable, distributed, B+ Tree research project, sponsored by IBM.
Later I worked as a Computer Architecture Engineer at Intel Corporation and as a Software Engineer in other companies where I developed many applications and features involving efficient and optimized multithreaded code to deliver real time video, audio and data - in education, healthcare, augmented reality and Ad Tech.
Today I am a Principal Software Engineer and Software Architect. Training and mentoring engineers on all levels is both my job and my passion.
We will learn
Operating Systems fundamentals and motivation for multithreading and concurrency.
The basics of multithreading - how to create threads in Java as well as communicate between threads in Java.
Performance considerations and design patterns of multithreaded and parallel applications. Optimizing for latency or throughput.
Data sharing between threads in Java. All the pitfalls and challenges as well as the solutions and best practices.
Advanced lock-free algorithms and data structures for increased responsiveness and performance.
By the End of the Course
You will be able to
Write correct, responsive, and performant multithreaded applications in Java, for any purpose and scale.
Apply best practices to architect multithreaded applications, algorithms and libraries.
Become knowledgable in concurrency & parallel programming, which will help you in job interviews, in your daily work as an engineer, as well as in your personal projects.
Become an expert in Java Multithreading, Concurrency and Performance optimization today. FAQs
- "Will the course help me with interview questions?"
Yes. The course is focused on helping you become proficient in multithreading and concurrency in general, and also master multithreading in Java in particular. You will learn all you need about threads in Java as well as common topics in interview questions involving locking, synchronization in Java, heap and stack memory organization and so on. Although the course is not focused on interview questions specifically, and there's no way to predict what you will be asked during an interview question, the knowledge you will get will definitely set you apart from other candidates.- "Does the course cover all threading classes and APIs in Java?"
"No. There are many books and expensive academic courses which cover EVERY single class and API which would take months to finish. In addition, Oracle provides excellent Java Docs that cover and explain every single Java multithreading API and class. This course is different. Based on years of experience in the field, I have carefully designed a short curriculum that teaches you all the essentials in a short amount of time. No fillers. No more wasting time learning things you could read yourself in 5 minutes or don't ever need. This course will build the foundation for you to become an expert in multithreading and concurrency. And also be able to successfully and easily, extend your own knowledge in the future.
- "What if I don't understand something during the course and I have a question, what do I do?"
Not a problem. I am here to help you succeed. Multithreading, is not an easy topic and no one is expected to get it all, right away. Each lecture has a Q&A section where students can ask questions about the lecture or any follow-up questions about the topic in general. I (the instructor) will answer all the questions in a timely manner and make sure you have all the tools for success.- "Does the course cover interprocess communication and distributed Systems?"
No. Although those are really interesting and important topics that involve concurrency. They are not directly related to Java multithreading, which is the main topic of the course. We do mention those topics during the course but they are out of scope and deserve their own course. The concepts, use-cases and challenges are very different than the ones we encounter while optimizing the performance of a single multithreaded Java application, algorithm or library, so we will not cover them here.
- "Why do I need a separate course for concurrent programming?"Concurrent programming is fundamentally different than the transitional sequential programming. As in every engineering decision, there's always a tradeoff. Parallel and Concurrent programming can have tremendous positive impact on the application's performance and responsiveness but is a lot harder to get it right. In this course we will learn all the caveats, techniques and best practices to get the most out of multithreaded applications in Java.
Get a Reminder
Get a Reminder
What people are saying
easy to understand
The course was easy to understand and provided a great fundation for beginning to write concurrent Java code.
The structure is very well planned and easy to understand the logic.
The theory is explained in an easy to understand way.
The instructor presented the concepts in easy to understand segments.
It was very clear and easy to understand The course is hands on and concepts are explained well with practical usages.
He makes the complicated concept easy to understand.
This course provides fluent and easy to understand main topics of threading and performance and example are realistic.
Good description as complex multithreaded java courses Michael makes the concepts clear and easy to understand with detailed explanations.
Thank you so much for this great course.
I thank the instructor so much for providing such a course to us.
He told about concurrency in great detail, this short content is packed with so much information that it worth to give it a try even for beginners Well thoughtout course on Multithreading.
Feeling so much knowledgeable after this course.
Thank you so much for this course.
Thank you so much.
Thank you so much Michael for sharing your knowledge with us.
Thank you so much!
I learned SO SO SO much!
Thank you so much for creating this course!
Thanks so much!
I found the course to be concise, well-organized, and very informative.
It is very informative, and well planed, with good walk-trough from basics on the start to the detailed end.
High quality content, very informative and several example.
Very informative and brilliant refresher of multithreading concept.
This was the first course on Udemy where the every single lecture/chapter was very informative.
Great course, very informative and useful.
Very informative and comfortable lecturing!
Very informative course.
The course was very informative and a good start for learning this topic.
Doesn't go too fast or too slow.
Thank you Sir Everything is too fast, fast switching slides and fast reading.
I also enjoyed the pace, not too fast, nor too slow.
Experience is like just reading the presentation and language is too fast Excited to learn new things!
Concurrent collections - when to use what Great course Its good.but too fast.
Coding is too fast.
The coding examples were too fast for me as well.
Also will use this one to refresh some of the concepts in future (it has to have a practical application anyways to stick in the memory) This is very useful and informative course , Just i recommend it and it worse the money paid covers all basics required to get a good grasp on java multi threading concepts.
This is not a comprehensive course though, it wont cover topics like multi threaded application design and thread pools, but its a good start for anyone who wants clear understanding of multi threading and concurrency concepts.
This course has deep content about multi threading.
One thing that make this course stand out from other multithreading courses on java out there, is the great examples tutor put in the course I've learned a lot about Multi Threading Concepts.
I highly recommend this course to people who need to fill the knowledge gap in multi threading and concurrency in Java.
The course had a good coverage on multi threading primitives but I missed two things: 1.
The only issue i had is that it's little short and if the author can add an extra section on more java specific data structures which are part of the concurrent package in the standard library and also talk more about the different thread pools that are available.
One suggestion I would add is to mention the benefit of immutable data structures.
I was also expecting the topic of concurrent data structures to be covered here though.
The only thing i would like to know is the list of other courses you have published specifically around data structures in Java and some real good projects in Java utilizing the concepts covered in this course.
what I felt is more time and real life examples can to added in section 9.
Excellent course, high quality content, real life examples and awesome explanations.
Although I have taken few such courses and my expectations might be low, I believe it covered the most important topics and presented them in such a way as to keep things interesting and constantly related to real life applications.
I liked the examples very much, they looks like real life tasks.
Very well explained thanks to the practical examples.
All very well explained, with concrete examples that you can easily reproduce on your computer This course is really very good.
All the topics are very well explained.
Very well explained with useful examples.
An overview of related careers and their average salaries in the US. Bars indicate income percentile.
Technology Applications Teacher 1 2 $66k
CMM Applications Engineer $68k
Mortgage Applications Support Analyst Manager $77k
Technology Applications Engineer - Product Build Contractor $84k
IT Business Applications Specialist $98k
Flash Applications Developer $105k
SAP Applications Specialist $113k
Vice Americas President Applications Developer $127k
Senior Product Applications $130k
Geoscience Applications Admin $131k
Senior Applications Developer Contractor $142k
Applications Developer + Agile Coach $164k
Write a review
Your opinion matters. Tell us what you think.