Today most programs have a concurrent element and knowledge of concurrency is vital. In this course Java Fundamentals - Concurrency with Multithreading, you'll gain the skills you need to create and work with such software using the Java libraries. This will also form a basis from which to learn more advanced frameworks. Just because this is a fundamentals course, it doesn't mean it's solely for Java novices. A wide range of topics will be covered, some fairly advanced, which are appropriate to more seasoned developers. First, you'll learn how to make a program multithreaded. Next, you'll learn how to safely communicate and share data between the threads and avoid liveness issues such as deadlock. Finally, you'll finish this course by looking at thread signaling and thread pools. After completing this module, you should be able to write multithreaded software with ease and be able to confidently discuss the subject in an interview situation.