کتاب استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ آیا میخواهید قدرت واقعی زبا...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره استاد شوید در برنامهنویسی همزمان جاوا: ساخت اپلیکیشنهای مقیاسپذیر و ایمن از نظر نخ
موضوع کلی: برنامهنویسی همزمان و موازی
موضوع میانی: اصول و الگوهای همزمانی در جاوا
📋 سرفصلهای دوره
- 1. مقدمهای بر همزمانی: چرا و چگونه؟
- 2. تفاوت همزمانی (Concurrency) و موازیکاری (Parallelism)
- 3. فرآیندها و نخها (Threads) در جاوا
- 4. ایجاد و مدیریت نخها: کلاس Thread و رابط Runnable
- 5. چرخه حیات یک نخ: New, Runnable, Blocked, Waiting, Timed_Waiting, Terminated
- 6. خطرات همزمانی: آشنایی با ایمنی نخ (Thread Safety)
- 7. مفهوم رقابت (Race Condition) و مثالهای عملی
- 8. اتمیسیته (Atomicity): عملیات تجزیهناپذیر
- 9. مشکلات رویتپذیری (Visibility) در حافظه مشترک
- 10. مشکلات ترتیبدهی مجدد (Reordering) توسط کامپایلر و CPU
- 11. قفلگذاری ذاتی (Intrinsic Locking): کلمه کلیدی synchronized
- 12. استفاده از synchronized روی متدها
- 13. استفاده از بلاکهای synchronized و انتخاب مانیتور قفل
- 14. مفهوم Reentrancy در قفلهای ذاتی جاوا
- 15. کلمه کلیدی volatile و تضمین رویتپذیری
- 16. رابطه happens-before و نقش volatile
- 17. ارتباط volatile با اتمیسیته: چه چیزی را تضمین نمیکند؟
- 18. استراتژیهای ایمنی نخ: محصورسازی، تغییرناپذیری و محبوسسازی
- 19. طراحی کلاسهای تغییرناپذیر (Immutable Objects)
- 20. نقش کلیدی کلمه final در ساخت آبجکتهای تغییرناپذیر
- 21. محبوسسازی نخ (Thread Confinement)
- 22. استفاده از Ad-hoc confinement و Stack confinement
- 23. کلاس ThreadLocal برای محبوسسازی نخ
- 24. انتشار و اشتراکگذاری ایمن آبجکتها
- 25. اشتراکگذاری آبجکتهای تغییرپذیر: راهکارهای ایمن
- 26. تفویض ایمنی نخ (Delegating Thread Safety)
- 27. ترکیب آبجکتهای ایمن از نظر نخ
- 28. مستندسازی سیاستهای همزمانی
- 29. کالکشنهای همزمان: Vector و Hashtable و مشکلات آنها
- 30. کالکشنهای همزمان: استفاده از های synchronized
- 31. معرفی پکیج java.util.concurrent
- 32. رابط ConcurrentMap و پیادهسازی ConcurrentHashMap
- 33. عملکرد و ساختار داخلی ConcurrentHashMap
- 34. کلاس CopyOnWriteArrayList و موارد استفاده آن
- 35. کلاس CopyOnWriteArraySet
- 36. صفهای مسدودکننده (Blocking Queues) و الگوی تولیدکننده-مصرفکننده
- 37. انواع BlockingQueue: ArrayBlockingQueue و LinkedBlockingQueue
- 38. صفهای اولویتدار و تاخیردار: PriorityBlockingQueue و DelayQueue
- 39. استفاده از Deque و BlockingDeque
- 40. چرا از نخها به صورت مستقیم استفاده نکنیم؟
- 41. معرفی چارچوب Executor
- 42. رابط Executor و ExecutorService
- 43. کارخانه Executors: ساخت انواع استخر نخ (Thread Pool)
- 44. چرخه حیات یک ExecutorService: Running, Shutting down, Terminated
- 45. الگوهای خاموش کردن ایمن استخر نخها
- 46. رابطهای Callable و Future: دریافت نتایج از وظایف
- 47. مدیریت استثناها در وظایف اجرا شده توسط Executor
- 48. مفهوم و کاربرد Future.get() و مدیریت Timeout
- 49. کلاس FutureTask
- 50. مفهوم CompletionService: مدیریت نتایج وظایف نامتقارن
- 51. پیکربندی ThreadPoolExecutor: corePoolSize, maximumPoolSize
- 52. پیکربندی ThreadPoolExecutor: keepAliveTime, workQueue
- 53. سیاستهای اشباع (Saturation Policies) در ThreadPoolExecutor
- 54. کلاس ScheduledExecutorService برای زمانبندی وظایف
- 55. همزمانی در برنامههای گرافیکی (Swing و JavaFX)
- 56. نخ توزیع رویداد (Event Dispatch Thread)
- 57. مفهوم بنبست (Deadlock)
- 58. شرایط لازم برای وقوع بنبست
- 59. شناسایی و جلوگیری از بنبست
- 60. بنبست قفل پویا (Dynamic lock order deadlock)
- 61. راهکارهایی برای اجتناب از بنبست
- 62. قفل گرسنه (Livelock) و گرسنگی (Starvation)
- 63. هماهنگی بین نخها: wait, notify, و notifyAll
- 64. مشکلات رایج در استفاده از wait/notify: Spurious Wakeups
- 65. ابزارهای هماهنگساز (Synchronizers): Latches
- 66. استفاده از CountDownLatch برای هماهنگی شروع و پایان
- 67. ابزارهای هماهنگساز (Synchronizers): Barriers
- 68. استفاده از CyclicBarrier برای همگامسازی گروهی از نخها
- 69. ابزارهای هماهنگساز (Synchronizers): Semaphores
- 70. کنترل دسترسی به منابع با Semaphore
- 71. ابزارهای هماهنگساز (Synchronizers): Exchanger
- 72. لغو و توقف وظایف
- 73. مدیریت وقفهها (Interruption) و InterruptedException
- 74. پیادهسازی وظایف قابل لغو
- 75. الگوهای خاموش کردن سرویسها و وظایف
- 76. مدل حافظه جاوا (Java Memory Model - JMM)
- 77. رابطه "قبل-رخدادن" (Happens-Before Relationship)
- 78. انتشار ایمن (Safe Publication) و الگوهای آن
- 79. الگوی Double-Checked Locking و مشکلات آن
- 80. قفلهای صریح: رابط Lock
- 81. کلاس ReentrantLock و قابلیتهای پیشرفته آن
- 82. قفلهای منصفانه و ناعادلانه (Fair vs. Unfair Locks)
- 83. استفاده از Condition برای هماهنگی پیشرفته
- 84. مقایسه Condition با wait/notify
- 85. قفلهای خواندن-نوشتن: ReadWriteLock و ReentrantReadWriteLock
- 86. کلاس StampedLock و قفلگذاری خوشبینانه
- 87. کلاسهای اتمیک: پکیج java.util.concurrent.atomic
- 88. عملیات مقایسه و تعویض (Compare-And-Swap - CAS)
- 89. الگوریتمهای غیرمسدودکننده (Non-blocking Algorithms)
- 90. پیادهسازی یک شمارنده غیرمسدودکننده
- 91. اندازهگیری و تنظیم عملکرد همزمانی
- 92. قانون آمدال (Amdahl's Law) و تاثیر آن بر مقیاسپذیری
- 93. کاهش رقابت بر سر قفل (Lock Contention)
- 94. تکنیکهای کاهش رقابت: Lock Splitting و Lock Striping
- 95. تست واحدهای همزمان
- 96. تست ایمنی (Safety) و زنده بودن (Liveness)
- 97. ابزارهای تست: استرس تست و تحلیل پروفایل
- 98. چارچوب Fork/Join
- 99. کلاسهای RecursiveTask و RecursiveAction
- 100. استریمهای موازی (Parallel Streams)
تگها:
Concurrency
Java
Java concurrency in Practice
Multithreading
Parallel Computing
Programming
آموزش جاوا
اپلیکیشن
اصول
الگوها
ایمنی
برنامه نویسی همزمان
برنامهنویسی موازی
مقیاسپذیری
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.