نکته:
آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیویی برای نمایش وجود ندارد.
توضیحات دوره:
اگر می خواهید برنامه های جاوا چند موضوعی بنویسید ، این دوره برای شما مناسب است. شما در مورد مشکلات برنامه نویسی همزمان در پردازنده چند هسته ای و به اشتراک گذاری کاذب یاد خواهید گرفت. همچنین شما با مدل حافظه جاوا آشنا خواهید شد. هر توسعه دهنده باید بداند چگونه برنامه های چند رشته ای را در جاوا بنویسد. این دوره ، استفاده از همزمانی و چند رشته ای در الگوهای رایج جاوا ، ارائه دقیق کلیه اصول اساسی شما است. شما درباره مشکلات اصلی برنامه نویسی همزمان در CPU چند هسته ای ، از جمله شرایط مسابقه ، همگام سازی ، قفل مجدد ورودی و بن بست یاد خواهید گرفت. در مرحله بعدی ، نحوه انتقال کاربرد برنامه شما از حافظه اصلی به حافظه نهان پردازنده و نحوه به اشتراک گذاری کاذب را پوشش خواهید داد. سرانجام ، شما با مدل حافظه جاوا و مفهوم اتفاق قبل روبرو می شوید. با پایان این دوره ، شما خواهید فهمید که همزمان و چند رشته ای چگونه بر روی انواع الگوهای جاوا کار می کند و شما قادر خواهید بود از این دانش برای ایجاد برنامه های بهتر استفاده کنید.
سرفصل ها و درس ها
درک همزمانی ، موضوع و همگام سازی
Understanding Concurrency, Threading, and Synchronization
-
مقدمه: در این دوره چه چیزی می خواهید یاد بگیرید؟
Introduction: What Are You Going to Learn in This Course?
-
دستور کار: برای دنبال کردن این دوره چه چیزی باید بدانید؟
Agenda: What Should You Know to Follow This Course?
-
تعریف یک موضوع ، موضوع موجود در جاوا
Definition of a Thread, Existing Thread in Java
-
منظور از انجام همزمان وظایف چیست؟
What Does It Mean for Tasks to Happen at the Same Time?
-
اتفاق همزمان در پردازنده چند هسته ای
Happening at the Same Time on Multicore CPU
-
به اشتراک گذاری زمان پردازنده با استفاده از یک برنامه ریز موضوع
CPU Time Sharing Using a Thread Scheduler
-
شرایط مسابقه در برنامه نویسی همزمان چیست؟
What Is a Race Condition in Concurrent Programming?
-
تجزیه و تحلیل شرایط مسابقه در الگوی Singleton
Analysis of a Race Condition in the Singleton Pattern
-
همگام سازی کد برای جلوگیری از شرایط مسابقه
Synchronizing Code to Prevent Race Conditions
-
درک موضوع قفل در همگام سازی
Understanding the Lock Object in Synchronization
-
درک همگام سازی با چندین روش
Understanding Synchronization Over Multiple Methods
-
قفل بازپرداخت کننده چیست؟
What Is a Reentrant Lock?
-
بن بست چیست؟
What Is a Deadlock?
-
مرور سریع الگوی قابل اجرا برای راه اندازی موضوعات
Quick Overview of the Runnable Pattern to Launch Threads
-
کدگذاری زنده: راه اندازی اولین موضوع شما
Live Coding: Launching Your First Thread
-
کدگذاری زنده: شرایط مسابقه در عمل و نحوه رفع آن
Live Coding: A Race Condition in Action, and How to Fix It
-
برنامه نویسی زنده: یک اقدام Lockin مرده و نحوه رفع آن
Live Coding: A Dead Lockin Action, and How to Fix It
-
بسته بندی ماژول
Wrap-up of the Module
پیاده سازی الگوی تولید کننده/مصرف کننده با استفاده از Wait/Notify
Implementing the Producer/Consumer Pattern Using Wait / Notify
-
مقدمه: دستور کار ماژول
Introduction: Agenda of the Module
-
راه اندازی یک کار در یک موضوع جدید با الگوی قابل اجرا
Launching a Task in a New Thread with the Runnable Pattern
-
نحوه متوقف کردن موضوع با استفاده از روش وقفه ()
How to Stop a Thread Using the interrupt() Method
-
پیاده سازی اولین تولید کننده/نمونه مصرف کننده
Implementing a First Producer/Consumer Example
-
اولین نسخه همگام سازی تولید کننده/مصرف کننده
A First Synchronized Version of the Producer/Consumer
-
چه مواردی برای رفع این نسخه ناقص اول لازم است
What Is Needed to Fix This First, Flawed Version
-
درک نحوه کارکرد روش های انتظار () و اطلاع رسانی ()
Understanding How the wait() and notify() Methods Work
-
اصلاح کد تولید کننده/مصرف کننده با استفاده از Wait/Notify
Fixing the Producer / Consumer Code Using Wait / Notify
-
درک نحوه همگام سازی با انتظار () و اطلاع رسانی ()
Understanding How Synchronization Works with wait() and notify()
-
کدگذاری زنده: تولید کننده/مصرف کننده ناسازگار ، ناقص در عمل
Live Coding: Unsynchronized, Flawed Producer/Consumer in Action
-
برنامه نویسی زنده: تولید کننده/مصرف کننده همزمان ، ناقص در عمل
Live Coding: Synchronized, Flawed Producer/Consumer in Action
-
برنامه نویسی زنده: صبر کنید/اطلاع دهید ، تهیه کننده/مصرف کننده صحیح در عمل
Live Coding: wait/notify, Correct Producer/Consumer in Action
-
درک وضعیتهای یک موضوع
Understanding the States of a Thread
-
درک نمودار حالت یک موضوع
Understanding the State Diagram of a Thread
-
جمع کردن وضعیت یک موضوع
Wrap-up on the State of a Thread
-
بسته بندی ماژول
Wrap-up of the Module
سفارش عملیات خواندن و نوشتن روی پردازنده مرکزی چند هسته ای
Ordering Read and Writes Operations on a Multicore CPU
-
مقدمه: دستور کار ماژول
Introduction: Agenda of the Module
-
مقدمه ای بر قابلیت مشاهده: بازگشت به پرونده تولید کننده/مصرف کننده ما
Introduction to Visibility: Back to Our Producer/Consumer Case
-
سازمان حافظه پنهان در پردازنده های چند هسته ای
Organization of Caches on Multicore CPUs
-
تعریف قابلیت مشاهده بر روی پردازنده های چند هسته ای
Definition of Visibility on Multicore CPUs
-
درک اینکه چرا پیوند قبل از وقوع بسیار مهم است
Understanding Why the Happens-before Link Is So Important
-
تعریف پیوند Happens-before از مدل حافظه جاوا
Definition of the Happens-before Link from the Java Memory Model
-
درک پیوند اتفاقات قبل از مثالهای اساسی
Understanding the Happens-before Link on Basic Examples
-
درک پیوند اتفاقات قبل از مثال پیچیده
Understanding the Happens-before Link on a Complex Example
-
همگام سازی و نوسانات در متغیرهای مشترک
Synchronization and Volatility on Shared Variables
-
درک False Sharing در پردازنده های چند هسته ای
Understanding False Sharing on Multicore CPUs
-
اشتراک نادرست چگونه می تواند بر عملکرد برنامه ها تأثیر بگذارد
How False Sharing Can Impact the Performance of Applications
-
کدگذاری زنده: تنظیم یک مثال ساده برای مشاهده اشتراک گذاری کاذب
Live Coding: Setting up a Simple Example to Observe False Sharing
-
کدگذاری زنده: مشاهده اشتراک گذاری کاذب با یک مثال ساده
Live Coding: Observing False Sharing on a Simple Example
-
بسته بندی ماژول
Wrap-up of the Module
پیاده سازی Thread Safe Singleton در پردازنده چند هسته ای
Implementing a Thread Safe Singleton on a Multicore CPU
-
مقدمه: دستور کار ماژول
Introduction: Agenda of the Module
-
اولین اجرای الگوی Singleton
A First Implementation of the Singleton Pattern
-
شناسایی شرایط مسابقه در این اولین اجرای
Identifying the Race Condition in This First Implementation
-
رفع شرایط مسابقه با استفاده از همگام سازی ساده لوحانه
Fixing the Race Condition Using Naive Synchronization
-
تجزیه و تحلیل عملکرد در یک CPU تک هسته ای
Analyzing the Performance on a Single Core CPU
-
تجزیه و تحلیل عملکرد در CPU دو هسته ای
Analyzing the Performance on a Two Core CPU
-
درک مسئله عملکرد Singleton همگام سازی شده
Understanding the Performance Issue of the Synchronized Singleton
-
رفع شرایط مسابقه با استفاده از قفل کردن دوبار چک
Fixing the Race Condition Using Double Check Locking
-
درک اشکال همزمان در Double Check Locking
Understanding the Concurrent Bug in the Double Check Locking
-
مشکلات احتمالی با قفل کردن دوبار چک
Possible Issues with the Double Check Locking
-
اصلاح شرایط مسابقه به روش صحیح: استفاده از شمارش
Fixing the Race Condition the Right Way: Using Enumeration
-
کدگذاری زنده: سعی در حل مثال LongWrapper با فرار
Live Coding: Trying to Fix the LongWrapper Example with Volatile
-
کدگذاری زنده: رفع مثال LongWrapper با همگام سازی
Live Coding: Fixing the LongWrapper Example with Synchronization
-
برنامه نویسی زنده: ارائه مطالعه موردی Java Puzzler LockMess
Live Coding: Presenting the Java Puzzler LockMess Case Study
-
کدگذاری زنده: تجزیه و تحلیل اشکال در مطالعه موردی LockMess
Live Coding: Analyzing the Bug in the LockMess Case Study
-
کدگذاری زنده: رفع اشکال در مطالعه موردی LockMess
Live Coding: Fixing the Bug in the LockMess Case Study
-
نحوه نوشتن خلاصه کد همزمان
How to Write Correct Concurrent Code Wrap-up
-
جمع بندی دوره و تشکر از شما!
Course Wrap-up and Thanks!
نمایش نظرات