We may earn an affiliate commission when you visit our partners.
Andrii Piatakha and Learn IT University

From this course, you can learn Multithreading with Java Examples.

There are a lot of other courses on this topic. So, why would you choose exactly this course?  Here are just a few reasons:- Coding examples

To learn to program is not enough just watching videos and reading books. You also need to have a lot of practice. In this training course, you will review multiple practical tasks and coding examples which will help you learn and understand Java better.

- Open source code

Read more

From this course, you can learn Multithreading with Java Examples.

There are a lot of other courses on this topic. So, why would you choose exactly this course?  Here are just a few reasons:- Coding examples

To learn to program is not enough just watching videos and reading books. You also need to have a lot of practice. In this training course, you will review multiple practical tasks and coding examples which will help you learn and understand Java better.

- Open source code

We hide nothing from our students.  Including the source code for the home task solutions and source code of examples that were shared during the lesson. Having the source code you can just copy and paste it to run it on your local computer to understand how things work better.

You are allowed to use all source code examples for learning purposes. This helps significantly to configure the environment and make tests work, especially in case students didn't work with any testing framework in the past.

- Q&A support 

The significant difference between the online and offline learning process is the instructor's availability. If you are in one room with a tutor he always can help you to get understand the specific concept or to help fix your code on your computer. In this course, we are supporting students with answers to any questions flagged in the Q&A section. In case there will be recurring questions - separate video lessons will be created to show how to address the issue.

So with this course you are not just getting video materials, code exercises, source code, access to the free mobile application without limits (which is still pretty cool, huh? :) ), but you also get tutor support and answers to your questions along with this course. - Relevant knowledge

After our team investigated other Java courses on Udemy we realized that most of them have nothing in common with real life. The information which is shared there is very old and significantly out of date. For example, the instructor teaches a framework which is not been used already for 15 years. Or instructors do stress on the programming design which is not used anymore at all.

The instructor of this course is a consultant in a top-rated IT outsourcing company and helps to bring cutting-edge solutions in IT for all his clients. Feel free to check the LinkedIn page of the instructor and check skills endorsement. More than 19 thousand people across all over the world (BTW most of them are from the top 100 companies of the world) evaluated the skills of Andrii Piatakha.

With this course, you can be sure that you will spend your time learning the right things from one of the best IT consultants in the world.

- Free mobile App without limits for our students

Knowing Java is one skill. Be able to pass interviews in the company - that is another skill :) Nowadays a lot of companies use tests to select candidates on the first level of interview. We developed applications to practice skills specifically for such purposes.

In this course, we will provide you link to download our FREE mobile app for android. (soon it will be also available for iOS platforms)

The instructor of this course comes up with hundreds of tests that are used to test the knowledge of candidates. With this application, you will be well-prepared for the interview.

Also, only for our students - there is no limit on attempts to pass certification. In the course, we will tell you how to set up a special bonus code that will remove restrictions for our students inside the app.

- High concentration of useful material in each lesson

Sometimes you can notice that watching 5 minutes of our lesson is equivalent to watching another 30 minutes lesson.

This is because time spent for preparation for the lesson (script for the lesson, lesson structure) and video editing (to cut boring pieces of the lesson or time when the program loads) sometimes 10 times as much (sometimes even 20) as the final lesson duration after video editing.

Also, each topic is separated from another. In case some concept will be explained in the next lesson and you don't need to worry about understanding this in the scope of this lesson - the instructor will make an announcement when a specific topic will be covered.

Go and try it yourself.  We will appreciate your feedback.

So don't wait. Take a look at the lessons' preview if you still have doubts.

Buy this course today, and you will get all updates for FREE.

For those who successfully passed this training course, or for students who were recognized for asking amazing questions, there is a special offer from the IT-Bulls company. The creator of this course is IT-Bulls company CEO and Founder. We are always in search of talents to run our amazing startups together with you. Probably you always dreamed about running your startup? In this course, you will be able to find the team who will teach you how to do that and (in particular cases) will be glad to help with implementation.

Hope you enjoy this course. And remember, we appreciate all your feedback. Your feedback will help us to become even better.  Your feedback will help us to create to best Java course ever.

See you at the lessons.  :)

Enroll now

What's inside

Learning objectives

  • Multithreading :)
  • Memory management in multithreading programs
  • Monitor/mutex and how to work with it
  • Build well designed & correct multithreaded applications in java, with confidence
  • How to create java multithreading apps
  • How thread scheduler works in java
  • What is race condition and how to avoid it
  • Concurrent programming
  • Deadlocks & livelocks and how to avoid them
  • Executor services in jdk
  • Lock api in jdk
  • Learn to write asynchronous/parallel programming code using functional style apis
  • Synchronizers
  • Gain expert-level practical knowledge of modern software architecture & programming using threads
  • Understand the advantages, limits and properties of parallel computing
  • Learn to write asynchronous code using completablefuture
  • Show more
  • Show less

Syllabus

From this section you will learn course structure, more about this course, and understand communication channels to use during the course

From this lecture you will learn:
• How to communicate during this course

• Where to ask questions

• How to ask questions

• Communication channels

Read more

From this lecture you will learn:

• Where to find good tests to verify your knowledge

• How to get unlimited access to Learn IT application (only for my students from Udemy)

Tips to Improve Your Course Taking Experience
Additional Free Learning Materials to Use During the Course
From this section you will learn synchronization basics
  • What is a process

  • What is a thread of execution

  • What is concurrency

  • What is a multithreading

  • How multithreading work: High-level overview

  • Threads synchronization: High-level overview

  • Classic tasks and use cases for multithreading programming

  • Benefits of multithreading

  • Drawbacks of multithreading

  • Multithreading in Java (packages, tools) - do not forget to mention concurrent collections

  • Thread lifecycle and possible states of a thread

  • How to start a thread - 5 ways

  • Thread class

  • Runnable interface

  • Main properties of Thread object (id, name, priority, daemon)

  • TimeUnit

  • How to interrupt thread of execution

  • How to stop execution - deprecated stop(), suspend() and resume() methods

  • interrupt() VS interrupted() VS isInterrupted()

  • currentThread()

  • sleep()

  • join() method


  • Thread scheduler

  • Race condition

  • priority filed in Thread

  • yield() method in Thread class

  • Daemon threads

  • Thread Groups

  • Throwing exception from run() method

  • What is critical section

  • Atomic operations

  • Basic synchronization example

  • What is a monitor

  • What is a mutex

  • monitor VS mutex

  • synchronized keyword

  • Synchronized blocks

  • wait()

  • notify()

  • notifyAll()

Concurrent Programming
  • Memory management in multithreading programs

  • Hardware memory architecture

  • volatile keyword example

  • java.util.concurrent.atomic

  • ThreadLocal

  • InheritableThreadLocal

  • What is deadlock

  • What is livelock

  • How to reproduce deadlock

  • How to reproduce livelock

  • How to avoid deadlock and livelock

  • Executor interface

  • Executor service interface

  • What is a thread pool

  • How to start thread with executor service

  • What is Callable

  • What is Future

  • invokeAll() & invokeAny()

  • Thread interruption with executor service

  • Overview of basic executor services

  • Fixed Thread Pool Executor

  • ThreadPoolExecutor

  • Thread Starvation

  • How much threads to create in pool

  • Blocking coefficient

  • ThreadFactory

  • Cached Thread Pool Executor

  • Single Thread Pool Executor

  • Scheduled Thread Pool Executor

Multithreading: Advanced
  • Fork/Join Framework overview

  • ForkJoinPool class

  • Work-stealing algorithm

  • RecursiveAction

  • RecursiveTask

  • newWorkStealingPool

  • Fork/join critique

  • How to execute tasks with completable future

  • runAsync(), supplyAsync()

  • complete()

  • What is a callback

  • thenApply(), thenApplyAsync()

  • thenAccept(), thenAcceptAsync()

  • thenRun(), thenRunAsync()

  • Combining Futures

  • thenCompose(), thenComposeAsync()

  • thenCombine(), thenCombineAsync()

  • thenAcceptBoth(), thenAcceptBothAsync

  • allOf(), anyOf()

  • exception handling with CompletableFuture

  • What is Lock API

  • Advantages of Lock API

  • Synchronized blocks VS Locks

  • Lock interface overview

  • ReentrantLock

  • Lock fairness

  • Conditions

  • Lock interface

  • ReadWriteLock interface

  • ReentrantReadWriteLock class

  • StampedLock

  • CyclicBarrier

  • CountDownLatch

  • CyclicBarrier VS CountDownLatch

  • Semaphore

  • Exchanger

  • Phaser

  • Phaser VS CyclicBarrier

Homework & Solution

The Quiz covers content from the following lessons:

  • Introduction to Multithreading

  • First Multithreading Program: Thread & Runnable

  • Thread Scheduler, Race Condition, Daemon Threads & Thread Groups

  • Synchronization basics: Critical Areas, Monitor/Mutex, Synchronized

  • Memory Management in Multithreading Programs

  • Deadlock and Livelock

  • Executor Services, Callable & Future

  • Executor Service Implementations & ThreadFactory

  • Fork/Join Framework

  • CompletableFuture

  • Lock API - Lock, ReadWriteLock, ReentrantLock, ReentrantReadWriteLock, StampedLock

  • Synchronizers - CyclicBarrier, CountDownLatch, Semaphore, Exchanger & Phaser

===== Multithreading in Java: Interview Preparation =====
Part 1: Java Multithreading Interview - Questions and Answers
Part 2: Java Multithreading Interview - Questions and Answers
Bonus section
Bonus lesson

Save this course

Save Java Multithreading - Concurrency, Parallelism & Performance to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Java Multithreading - Concurrency, Parallelism & Performance with these activities:
Review Core Java Concepts
Reinforce your understanding of fundamental Java concepts like object-oriented programming, data structures, and basic syntax. A solid foundation in these areas is crucial for understanding the complexities of multithreading.
Show steps
  • Review Java syntax and data types.
  • Practice writing basic Java programs.
  • Study object-oriented programming principles.
Review 'Effective Java'
Improve your overall Java programming skills with a focus on concurrency best practices. This book provides essential guidance on designing thread-safe classes and avoiding common pitfalls.
Show steps
  • Read the book cover to cover.
  • Focus on the chapters related to concurrency.
  • Apply the principles to your own code.
Read 'Java Concurrency in Practice'
Deepen your understanding of Java concurrency concepts with a comprehensive guide. This book provides practical examples and best practices for building robust multithreaded applications.
Show steps
  • Read the book cover to cover.
  • Work through the examples in the book.
  • Take notes on key concepts.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Implement Thread-Safe Data Structures
Solidify your understanding of thread safety by implementing common data structures in a thread-safe manner. This exercise will help you apply synchronization techniques and avoid race conditions.
Show steps
  • Implement a thread-safe queue using locks.
  • Implement a thread-safe hash map using concurrent collections.
  • Test your implementations thoroughly.
Write a Blog Post on Deadlock Prevention
Reinforce your understanding of deadlock prevention techniques by explaining them in a clear and concise manner. Writing a blog post will help you organize your thoughts and solidify your knowledge.
Show steps
  • Research common deadlock scenarios.
  • Explain deadlock prevention techniques with examples.
  • Write a clear and concise blog post.
Build a Concurrent Web Server
Apply your knowledge of Java multithreading to build a practical application. This project will challenge you to design and implement a concurrent web server that can handle multiple client requests simultaneously.
Show steps
  • Design the architecture of the web server.
  • Implement thread pooling for handling requests.
  • Implement request handling logic.
  • Test the web server with multiple concurrent clients.
Contribute to a Concurrent Open Source Project
Gain practical experience with real-world concurrency challenges by contributing to an open-source project. This will expose you to different coding styles, collaboration workflows, and complex concurrency scenarios.
Show steps
  • Find a suitable open-source project with concurrency aspects.
  • Understand the project's codebase and contribution guidelines.
  • Identify and fix a bug or implement a new feature related to concurrency.
  • Submit your contribution for review.

Career center

Learners who complete Java Multithreading - Concurrency, Parallelism & Performance will develop knowledge and skills that may be useful to these careers:

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Java Multithreading - Concurrency, Parallelism & Performance.
Comprehensive guide to Java concurrency, covering fundamental concepts, design principles, and common concurrency patterns. It delves into topics like thread safety, synchronization, and concurrent collections, providing practical examples and best practices. It's a highly recommended resource for understanding the intricacies of building robust and scalable multithreaded applications in Java and is often used as a textbook.
While not solely focused on concurrency, this book contains invaluable advice on writing robust and well-designed Java code, including sections on concurrency and multithreading. It provides best practices and guidelines for avoiding common pitfalls and writing efficient concurrent programs. It must-read for any serious Java developer.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser