Java Multithreading and Parallel Programming Masterclass

所在平台: Udemy

课程主页: https://www.udemy.com/course/java-multithreading-and-parallel-programming-masterclass/

课程评论:没有评论

第一个写评论        关注课程

课程简介

课程名称:Java多线程与并行编程大师班 课程概述: 本课程是掌握多线程技术和提升应用程序吞吐量的最佳在线资源。通过深入理解多线程概念(可应用于多种编程语言),以Java这一大型公司广泛使用的语言为例,帮助学员熟练掌握多线程技能。 讲师背景: 讲师在10年前开始编程,经过计算机科学课程的系统学习,最终获得并行与分布式系统硕士学位。他在高规模JVM开发方面有丰富经验,旨在分享自己对多线程的深入理解,帮助学习者避免常见的学习障碍。 课程目的: 多线程是开发人员面临的高级主题,许多初学者常遇到如何提高代码运行速度、如何将问题拆分、如何测量性能等问题。课程通过分享讲师的经验,帮助学员更快掌握多线程知识,避免走弯路。 课程内容: 1. **多线程基本概念**:学习线程和进程的基础知识,包括并发和并行。 2. **线程管理**:实践创建线程、使用线程组以及异常控制流等。 3. **线程同步 - 第一部分**:理解多线程工作中的同步挑战,学习基本的同步工具。 4. **线程同步 - 第二部分**:深入学习高级同步工具,如屏障和死锁。 5. **线程重用**:学习Java中的线程重用(线程池)及其管理。 6. **并行算法**:通过多线程提升已知算法的运行时间,掌握将问题拆分处理的方法。 7. **著名的多线程问题**:研究计算机科学家解决的经典多线程问题及其思维过程。 8. **多线程在现实世界中的应用**:探讨多线程与流行框架(如Spring-Boot、JavaRx和JavaFX)的关联,设计异步处理的REST API等。 课程要求: 基本Java知识(包括面向对象编程)、可运行Java代码的IDE(首选IntelliJ Idea社区版)、学习的热情和开放的心态。 感谢您查看本课程介绍,期待您在首节课中的参与!

课程评论(0条)

课程详情

IntroThis course is the best online resource you need to become proficient in working with threads and correctly apply Multithreading techniques to your applications, in order to leverage the CPU capabilities of your machines and max out the application throughput.The goal of this course is to make you deeply understand the multithreading concepts (that can be re-used in many other languages), applied and exemplified in Java, the language used by many large companies and more than 9 million developers around the world.About myselfI wrote my first line of code 10 years ago when I was in highschool. I quickly got addicted by how easy you could build useful programs using C# and Windows Forms.I followed the Computer Science University track where I managed to set the ground knowledge for anything related to Software Engineering (Algorithms, Data Structures, Operating Systems, Multithreading, Distributed Computing, Networking, and many other topics), and I finalized this amazing 6-year learning path by getting a Master's Degree in Parallel and Distributed Systems where I built from the ground a custom Kubernetes Gang Scheduler optimised for running Spark Jobs.Currently, I'm a Software Engineer focused on high-scale JVM-based development. I build code used by millions of people around the world.Why I built this course?Multithreading is an advanced topic for any developer. I saw many people struggling to understand things like:How can I speed up the runtime of this code?Is it possible to split this problem into multiple independent pieces?How can I measure the performance of this code?Why is my multithreaded code stuck? How can I debug it?It was really hard for me too to understand some of those things, even if I had enough university background in this area. But fortunately, after many years of working with threads, many trial and errors, many profiling sessions and books & articles read, I managed to deeply understand those critical concepts and use them properly in my daily job.For those reasons, I thought that building a course where I expose my understanding on Multithreading, would definitely help other people to save time and avoid going into the same pitfalls that I went through.This course is going to be continuously updated with new information in the multithreading field, but also with the relevant topics that you request in the Q & A section, so you're buying a true learning asset, since you can use this course as a technical reference.What is the content course?This course is split into multiple chapters, each one exposing a major topic in Multithreading:Chapter 1 - General Multithreading ConceptsIn this chapter we're going to learn the basics of Multithreading - threads, processes, concurrency, parallelism. This chapter is full of visual lectures, designed to provide a unique learning experience.Chapter 2 - Thread ManagementThis is the first hands-on chapter where we're going to learn how to create threads, how to use thread groups, daemon threads, but also how to build exception control flows, to avoid crashes due to unhandled exceptions.Chapter 3 - Thread Synchronization - Part 1This chapter goes into the main challenge when working with multiple threads, which is thread synchronization so that we get a predictable output of our application and avoid inconsistent behaviours.We're going to learn basic synchonization tools - locks, wait sets and notifications, read & write locks and semaphoresChapter 4 - Thread Synchronization - Part 2This chapter is a continuation of the previous one, where we're going to tackle advanced synchronization tools, like Barriers and Phasers, but we're also going to learn about deadlocks and cache coherency enforcement by the use of the volatile keyword.Chapter 5 - Thread ReusabilityWe can't create an infinite number of threads in our applications, because each thread needs some resources in order to be created, so for that reason we need to reuse threads.This chapter describes the tools we have in Java to deal with thread reusability (Thread Pools) and it goes deep into how to work with them, manage performance, choose the right parameters (tuning) and many others.Chapter 6 - Parallel AlgorithmsIn this chapter we're going to see how can we improve the runtime of a couple of known algorithms through multithreading.We're going to learn the thinking process of breaking a problem into multiple pieces which can be processed in parallel, and finally merging the results to get the main output.Chapter 7 - Famous Multithreading ProblemsThe first steps in Multithreading have been done many years ago, where famous computer scientists have tackled the problems which are know part of the Java Threading API.In this chapter, we're going to study a couple of those problems and get the thought process of their solution. This exercise is very valuable and contributes to the overall understanding of parallelism and synchronization.Chapter 8 - Multithreading in Real WorldThis final chapter of this course tackles the connection between Multithreading and widely used frameworks, like Spring-Boot, JavaRx and JavaFX. We're going to see how can we design a REST API in Spring Boot, which processes requests in an asynchronous way, leveraging multithreading.We're going to see how can we build parallel data flows with JavaRx2, and also how to decouple the UI updates from the background processing in JavaFx, which technically applies to mobile and desktop applications.What are the requirements for this course?Basic Java Knowledge (including Object Orientated Programming)An IDE of your choice, ideally IntelliJ Idea Community Edition, but you can use any IDE where you can run plain Java codeWillingness to learn and an open-mindThank you for taking the time to look through this description and I'm looking forward to see you in the first lecture!

课程标签

0人关注该课程

主题相关的课程