The synchronized keyword is a common building block in concurrent Java applications. Learn how to use it to avoid race conditions.
A race condition occurs when multiple threads mutate shared state such that the outcome depends on how exactly the threads’ operations interleave.
Threads are Java’s basic abstraction for running code in parallel. Learn how to use the Thread class to launch, finish, and wait for threads.
How to use Lombok to reduce Java boilerplate in logging, null checks, variable definitions, concurrent code, exception handling, laziness, and more.