Java Multithreading

Unveiling the mysteries of multithreading in Java. The ultimate Java multithreading course
313 reviews
  • John Purcell Software Development Trainer

    After working as a software developer and contractor for over 14 years for a whole bunch of companies including CSC, Proquest, SPSS and AT&T in the UK and Netherlands, I decided to work full-time as a private software trainer. I now live in the beautiful city of Budapest, Hungary, from where I run the website Cave of Programming.

  • Lifetime access to 16 lectures
  • 2+ hours of high quality content
  • A community of 37600+ students learning together!
  • 150+ discussions

Java Multithreading

Unveiling the mysteries of multithreading in Java. The ultimate Java multithreading course
313 reviews


Discover courses made by experts from around the world.

Take your courses with you and learn anytime, anywhere.

Learn and practice real-world skills and achieve your goals.


Discover how to write effective multi-threaded code in Java; learn why problems can occur with Java multithreading and how to fix those problems.

    • Some knowledge of Java
    • Over 16 lectures and 3 hours of content!
    • Understand Java multi-threading
    • Be able to write effective muli-threaded code
    • Java developers
    • Java beginners who don't mind a steep learning curve


30 day money back guarantee
Lifetime access
Available on Desktop, iOs and Android
Certificate of completion


  • SECTION 1:
    My First Section
  • 1
    Starting Threads

    In this tutorial we'll look at the two main ways to start a thread in Java. If you want to start lots of threads all at once you'll want to use thread pools, which we'll look at in a future tutorial; the methods in this tutorial are most suitable for starting one or a small number of threads. In case you're going for a job interview or taking an exam, this is a classic interview/exam question!

  • 2
    Basic Thread Synchronization

    This video looks at basic thread communication in Java using boolean flags with the volatile keyword. I also take a look at why volatile isn't good enough for most situations.

  • 3
    The Synchronized Keyword

    The basics of using the synchronized keyword in Java to stop threads messing up each other's work. What's an intrinsic lock, and why do we need it? 

  • 4
    Multiple Locks; Using Synchronized Code Blocks

    How to speed up your multithreaded code by locking only those sections of code that you need to, rather than using synchronized methods and locking your whole object. Don't forget to maximize to fullscreen so you can see the code. You can also find the code on

  • 5
    Thread Pools

    How to use thread pools to manage lots of threads to complete lots of similar tasks. Source code available on

  • 6
    Countdown Latches

    How to use the fantastic CountDownLatch class in Java to simplify your multithreaded code.

  • 7

    A tutorial on how to implement the producer-consumer pattern in Java using the ArrayBlockingQueue Java class. Producer-Consumer is the situation where one or more threads are producing data items and adding them to a shared data store of some kind while one or more other threads process those items, removing them from the data store.

  • 8
    Wait and Notify

    A tutorial on wait and notify; low-level thread synchronization methods in Java that allow you to avoid having vile process-consuming polling loops in your code. Code on Wait and notify allow you to have sleeping threads that are woken up by other threads. "Why, exactly what I've been looking for!" I hear you say. Yes, even people who don't program in Java can enjoy using these fantastic methods. OK, maybe that's going a bit far.

  • 9
    A Worked Example Using Low-Level Synchronization

    A tutorial on how to implement the producer-consumer pattern in Java using the "low level" keywords wait, notify and synchronize. (See tutorial 7 for the high level version). Code on

  • 10
    Re-entrant Locks

    How to use the ReentrantLock class in Java as an alternative to synchronized code blocks. ReentrantLocks let you do all the stuff that you can do with synchronized, wait and notify, plus some more stuff besides that may come in handy from time to time.

  • 11

    The causes of deadlock and two things you can do about it. This video also covers how to write a method that can safely acquire any number of locks in any order without causing deadlock, using the tryLock() method of ReentrantLock.

  • 12
    How to use Semaphores in multi-threaded Java code. Semaphores allow you to control how many threads can access a resource simultaneously; you can also use them as locks if the mood takes you, with the advantage that you can release (unlock) them from threads other than where you locked them.
  • 13
    Callable and Future
  • 14
    Interrupting Threads
    Finally it's time to figure out what those pesky InterruptedExceptions are for.
  • 15
    Multithreading in Swing with SwingWorker
    Multithreading in Swing (GUI) programs presents a few unique difficulties, since you can't (or at least you're not supposed to) update the GUI from another thread. The SwingWorker class can help you out a lot.
  • SECTION 2:
    Looking for Source Code?
  • 16
    Source code ....


Hours of video content
Course Enrollments


  • 235
  • 63
  • 12
  • 1
  • 2


  • WordPress Developer, PHP, JAVA Suresh KUMAR Mukhiya
    Very Informative and well presented

    Thank you John for this wonderful tutorial. It helped me to understand lots of stuffs in my work.

  • Dianela Nunez

    clearly explained

  • Ravi Kumar Singh
    Just amazing expalanation

    John, i really liked you explanation and a complete overview of multithreading thanks :)

  • Vins
    Good Threading Concepts

    Like the course. Recommend to others. Thanks John Purcell

  • Charles Branham
    The course I needed

    John, you have made another course that explains very well the in's and out's of java programming. I have been a programmer for many years and this was very insightful and your teaching style is excellent. I will be getting quite a few more of your courses. Thank you!