Multi threading in Java is the most essential feature that each and every Java developer should understand and be able to confidently apply it in solving complex programming problems where concurrent execution is a must. With parallel processing there comes a risk, i.e. shared mutability and the ability of the developer to solve concurrency problems. Thanks to the Java programming language that it makes the mighty multi-threaded application development a cake walk, if you assimilate few keys or core concepts you will be able to confidently design multi threaded applications with ease. To design multi threaded applications developers need to look at it through a different perspective i.e. change the thinking from serial to parallel and it requires some effort. Keeping this in mind this course contains the essential lectures whichcan guide you in this regard. This course was designed keeping the above points in mind and will help you understand these complex problems through simplified and easy to understand examples. Course contents includeUnderstanding Threads, Priorities, States, Daemon Threads. Thread synchronization using synchronized blocks and locks. Key components of java. util. concurrent package including ForkJoinPool and ForkJoinTask(s).Mock HttpServer to explain how HTTPworks and simulate how a typical web server responds to the client requests. ThreadLocal Introduction to distributed locksAn overview of how to build scalable applications using Messaging Queues. Introduction to Lambdas and Streams (Coming up)