Single-threaded concurrency designs are an alternative to multithreaded concurrency designs which achieves many of the same benefits (task switching) without many of the multithreading problems (thread update visibility, race conditions etc.etc.).
The Producer Consumer Pattern is a work load distribution pattern where the number of worker threads are decoupled from the number of tasks to execute.
The Java BlockingQueue interface represents a queue which can block threads from inserting into a full queue, or block threads from dequeuing from an empty queue.
In this tutorial I explain 3 common methods for preventing deadlock occurring. I have also made a video version of this tutorial.
Deadlock is when two or more threads end up blocked indefinitely waiting for each other to release resources they need to lock to do their job. I have updated the Deadlock tutorial.
The Java ExecutorService is a thread pool built into Java. I have update the Java ExecutorService tutorial, including added a new video version of this tutorial.
I have updated my JavaFX TableView tutorial to explain how to make table cells editable.
The Java Lock interface represents an lock which can make sure only one thread can lock it at a time - similarly to how a Java synchronized blocks works - only more flexible.
Thread pools are an alternative to creative one thread per task to execute. In this thread pool tutorial I explain how thread pools work, as well as how to implement your own in Java. I have also added a video version of this tutorial.