معنى العمل الجاد أنك في الأيام القادمة لن ترى إلا الأشخاص والأشياء التي تحبها!
القضايا وطلبات السحب هي موضع ترحيب. تم ترميز جميع المستندات بنفسي، إذا كنت تعتقد أنها جيدة، فنحن نرحب بك لتمييزها بنجمة للتشجيع والدعم :)
تدور سلسلة المقالات بأكملها حول التزامن في Java . أولاً، هذا هو اهتمامي الخاص. ثانيًا، من الصعب جدًا فهم هذا الجزء عمليًا. بالإضافة إلى ذلك، غالبًا ما يتم طرحه أثناء عملية المقابلة. لذلك، أثناء عملية التعلم، قمت بتسجيل المعرفة الأساسية المتعلقة بتزامن Java. أولاً، يمكنني إنشاء نظام لمعرفتي، وآمل أيضًا أن يكون مفيدًا للآخرين.
حول موضوعات التزامن في Java:
(1) يحتوي على المعرفة الأساسية بالتزامن، ويرتبط كل عنوان بمقالة محددة؛
(2) يحتوي على أسئلة المقابلة للتوظيف في الخريف، سيساعدك فهمها في الحصول على شيء ما (وآمل أن يتمكن الجميع من العثور على وظيفتك المفضلة :))
(3) أثناء عملية القراءة، إذا كان ذلك مفيدًا، من فضلك أعطني إعجابًا، وهو ما يشجعني على مثابرتي في البرمجة.
ملحوظة: يرجى الإشارة إلى المصدر الأصلي عند إعادة الطباعة، وشكرًا لك!
المعرفة الأساسية
1.1 مزايا وعيوب البرمجة المتزامنة
نقاط المعرفة: (1) لماذا نستخدم التزامن؟ (المزايا)؛ (2) عيوب البرمجة المتزامنة؛ (3) مفاهيم مربكة
1.2 حالة الخيط والعمليات الأساسية
نقاط المعرفة: (1) كيفية إنشاء خيط جديد (2) تحويل حالة الخيط؛ (3) العمليات الأساسية للخيط؛
نظرية التزامن (JMM)
نموذج ذاكرة جافا والقواعد التي تحدث قبل ذلك
نقاط المعرفة: (1) بنية ذاكرة JMM (2) إعادة الترتيب؛ (3) يحدث قبل القواعد
الكلمة الأساسية المتزامنة
3.1 تتيح لك فهم المزامنة بشكل كامل
نقاط المعرفة: (1) كيفية استخدام آلية المراقبة المتزامنة؛ (3) العلاقة التي تحدث قبل حدوثها؛ (4) دلالات الذاكرة المتزامنة؛ (5) تحسين القفل؛
3.2 تتيح لك فهم المتقلبة بشكل كامل
نقاط المعرفة: (1) مبدأ التنفيذ؛ (2) اشتقاق العلاقة قبل حدوثها؛ (3) دلالات الذاكرة؛ (4) تنفيذ دلالات الذاكرة
3.3 هل تعتقد أنك تفهم حقًا النهائي؟
نقاط المعرفة: (1) كيفية الاستخدام؛ (2) قواعد إعادة الترتيب النهائية؛ (3) مبدأ التنفيذ النهائي؛ (4) لا يمكن "تجاوز" المراجع النهائية من المنشئ (هذا الهروب)
3.4 ملخص لثلاث خصائص رئيسية: الذرية، والانتظام، والرؤية
نقاط المعرفة: (1) الذرية: متزامنة؛ (2) الرؤية: متزامنة، متقلبة؛ (3) الانتظام: متزامن، متقلب
نظام القفل
4.1 المقدمة الأولى عن Lock وAbstractQueuedSynchronizer (AQS)
نقاط المعرفة: (1) مقارنة بين القفل والمزامنة؛ (2) هدف تصميم AQS؛ (3) كيفية استخدام AQS لتنفيذ مكونات المزامنة المخصصة؛ (4) الأساليب القابلة للتجاوز؛ (5) أساليب القالب التي يوفرها AQS؛
4.2 فهم متعمق لـ AbstractQueuedSynchronizer (AQS)
نقاط المعرفة: (1) بنية بيانات قائمة انتظار مزامنة AQS (2) القفل الحصري؛ (3) القفل المشترك؛
4.3 فهم ReentrantLock مرة أخرى
نقاط المعرفة: (1) مبدأ تنفيذ القفل العادل؛ (2) مبدأ تنفيذ القفل العادل؛ (3) مبدأ تنفيذ القفل العادل (4) المقارنة بين القفل العادل والقفل غير العادل
4.4 فهم متعمق لقفل القراءة والكتابة ReentrantReadWriteLock
نقاط المعرفة: (1) كيفية تمثيل حالة القراءة والكتابة؛ (2) الحصول على WriteLock وإصداره؛ (3) الحصول على ReadLock وإصداره (4) استراتيجية تدهور القفل؛ (6) إنشاء قائمة انتظار الحالة؛ سيناريوهات التطبيق
4.5 شرح تفصيلي لآليات انتظار الحالة وانتظار الإشارة/الإخطار
نقاط المعرفة: (1) مقارنة الخصائص بآلية انتظار/إخطار الكائن؛ (2) الطرق المقابلة لانتظار/إخطار الكائن؛ (3) مبدأ تنفيذ الانتظار؛ 6) مزيج من الانتظار والإشارة/الإشارة الكل؛
4.6 أداة دعم القفل
نقاط المعرفة: (1) الوظائف الرئيسية (2) الخصائص مقارنة بتنشيط الحظر المتزامن؛
حاوية متزامنة
5.1 الحاوية المتزامنة ConcurrentHashMap (الإصدار 1.8 من JDK)
نقاط المعرفة: (1) السمات الرئيسية؛ (2) الفئات الداخلية المهمة؛ (3) عمليات البناء المرتبطة بها؛ (5) عملية التنفيذ؛ 8) عملية تنفيذ طريقة حساب الحجم (9) مقارنة بين الإصدار 1.8 ConcurrentHashMap والإصدارات السابقة
5.2 CopyOnWriteArrayList للحاوية المتزامنة
نقاط المعرفة: (1) مبدأ التنفيذ؛ (2) الفرق بين COW وReentrantReadWriteLock؛ (3) سيناريوهات التطبيق؛ (4) لماذا يوجد اتساق ضعيف؛ (5) عيوب COW؛
5.3 ConcurrentLinkedQueue للحاوية المتزامنة
نقاط المعرفة: (1) مبدأ التنفيذ؛ (2) بنية البيانات؛ (3) الطريقة الأساسية؛ (4) تصميم تحديث HOPS
5.4 ThreadLocal للحاوية المتزامنة
نقاط المعرفة: (1) مبدأ التنفيذ (2) مبدأ تعيين الطريقة (3) مبدأ الحصول على الأسلوب (4) مبدأ إزالة ThreadLocalMap
مقال يشرح مشكلة تسرب الذاكرة ThreadLocal بعمق من الكود المصدري.
نقاط المعرفة: (1) مبدأ تسرب الذاكرة ThreadLocal (2) أفضل ممارسات ThreadLocal؛ (3) سيناريوهات التطبيق
5.5 قائمة انتظار الحظر للحاوية المتزامنة
نقاط المعرفة: (1) العمليات الأساسية لـ BlockingQueue (2) BlockingQueue شائعة الاستخدام؛
شرح تفصيلي لمبادئ تنفيذ ArrayBlockingQueue وLinkedBlockingQueue في الحاويات المتزامنة
تجمع الخيوط (نظام المنفذ)
6.1 مبدأ تنفيذ تجمع الخيوط
نقاط المعرفة: (1) لماذا نستخدم تجمع الخيوط؟ (2) عملية التنفيذ؛ (3) معنى كل معلمة للمنشئ؛ (4) كيفية إغلاق تجمع الخيوط؛ (5) كيفية تكوين تجمع الخيوط؛
6.2 جدولة ThreadPoolExecutor لتجمع الخيوط
نقاط المعرفة: (1) هيكل الفصل (2) الطرق الشائعة (3) مهمة محددة في المستقبل (3) قائمة انتظار العمل؛
6.3 ملخص العمليات الأساسية لـ FutureTask
نقاط المعرفة: (1) حالات FutureTask المتعددة (2) طريقة الإلغاء؛ (4) سيناريوهات التطبيق؛ (5) تنفيذ الواجهة القابلة للتشغيل
فئة العملية الذرية
7.1 ملخص فئات العمليات الذرية في الحزمة الذرية في جافا
نقاط المعرفة: (1) مبدأ التنفيذ؛ (2) النوع الأساسي للتحديث الذري؛ (3) نوع مصفوفة التحديث الذري؛ (4) النوع المرجعي للتحديث الذري؛
أدوات التزامن
8.1 باللغة الإنجليزية البسيطة، فئات أدوات التزامن في Java-CountDownLatch، CyclicBarrier
نقاط المعرفة: (1) CountDownLatch (2) CyclicBarrier (3) مقارنة بين CountDownLatch وCyclicBarrier
8.2 فئات أدوات التزامن Java باللغة العامية - Semaphore، Exchanger
نقاط المعرفة: (1) التحكم في الوصول إلى الموارد (2) مبادل تبادل البيانات
ممارسة التزامن
9.1 مقال يسمح لك بفهم قضية المنتج والمستهلك بشكل كامل
الرسم البياني للمعرفة المتزامنة في جافا
يمكنك الانتقال إلى نافذة جديدة للتكبير لمشاهدة أفضل أو عرض الصورة الأصلية.
رابط إلى الصورة الأصلية للرسم البياني المعرفي، إذا كان ذلك مفيدًا، فيمكنك استنساخه لاستخدامك الخاص.