تعدد الخيوط في جافا هي عملية تنفيذ مؤشرات ترابط متعددة في وقت واحد.
الخيط عبارة عن عملية فرعية خفيفة الوزن، وهي أصغر وحدة معالجة. المعالجة المتعددة والترابط المتعدد، كلاهما يستخدم لتحقيق تعدد المهام.
مجموعة شبيبة
ومع ذلك، فإننا نستخدم تعدد العمليات بدلاً من المعالجة المتعددة لأن سلاسل العمليات تستخدم منطقة ذاكرة مشتركة. لا تخصص منطقة ذاكرة منفصلة، لذا فهي توفر الذاكرة، ويستغرق تبديل السياق بين سلاسل العمليات وقتًا أقل من المعالجة.
يتم استخدام Java Multithreading في الغالب في الألعاب والرسوم المتحركة وما إلى ذلك.
مزايا تعدد جافا
1) ذلك لا يمنع المستخدم لأن الخيوط مستقلة ويمكنك إجراء عمليات متعددة في نفس الوقت.
2) أنت يمكن إجراء العديد من العمليات معًا، مما يوفر الوقت .
3) المواضيع مستقل ، لذلك لا يؤثر على سلاسل الرسائل الأخرى في حالة حدوث استثناء في مؤشر ترابط واحد.
تعدد المهام
تعدد المهام هو عملية تنفيذ مهام متعددة في وقت واحد. نحن نستخدم تعدد المهام للاستفادة من وحدة المعالجة المركزية. يمكن تحقيق تعدد المهام بطريقتين:
- تعدد المهام القائم على العمليات (المعالجة المتعددة)
- تعدد المهام القائم على الخيوط (تعدد المهام)
1) تعدد المهام القائم على العمليات (المعالجة المتعددة)
- كل عملية لها عنوان في الذاكرة. بمعنى آخر، تقوم كل عملية بتخصيص منطقة ذاكرة منفصلة.
- العملية ثقيلة الوزن.
- تكلفة الاتصال بين العملية مرتفعة.
- يتطلب التحول من عملية إلى أخرى بعض الوقت للحفظ والتحميل السجلات وخرائط الذاكرة وتحديث القوائم وما إلى ذلك.
2) تعدد المهام القائم على الخيوط (تعدد المهام)
- المواضيع تشترك في نفس مساحة العنوان.
- الخيط خفيف الوزن.
- تكلفة الاتصال بين الخيط منخفضة.
ملاحظة: مطلوب عملية واحدة على الأقل لكل موضوع.
ما هو الموضوع في جافا
الخيط عبارة عن عملية فرعية خفيفة الوزن، وهي أصغر وحدة معالجة. إنه طريق منفصل للتنفيذ.
المواضيع مستقلة. إذا حدث استثناء في موضوع واحد، فإنه لا يؤثر على المواضيع الأخرى. ويستخدم منطقة الذاكرة المشتركة.
كما هو موضح في الشكل أعلاه، يتم تنفيذ خيط داخل العملية. هناك تبديل السياق بين المواضيع. يمكن أن تكون هناك عمليات متعددة داخل نظام التشغيل، ويمكن أن تحتوي عملية واحدة على عدة سلاسل عمليات.
ملاحظة: في المرة الواحدة يتم تنفيذ موضوع واحد فقط.
فئة موضوع جافا
توفر جافا فئة الموضوع لتحقيق برمجة الموضوع. توفر فئة الموضوع بناة وطرق إنشاء وتنفيذ العمليات على سلسلة المحادثات. تمتد فئة الموضوع فئة الكائن وينفذ واجهة قابلة للتشغيل.
طرق موضوع جافا
س.ن. | المعدل والنوع | طريقة | وصف |
---|---|---|---|
1) | فارغ | يبدأ() | يتم استخدامه لبدء تنفيذ الخيط. |
2) | فارغ | يجري() | يتم استخدامه للقيام بإجراء لموضوع. |
3) | الفراغ ثابت | ينام() | ينام الخيط لفترة زمنية محددة. |
4) | موضوع ثابت | الموضوع الحالي () | تقوم بإرجاع مرجع إلى كائن مؤشر الترابط الذي يتم تنفيذه حاليًا. |
5) | فارغ | ينضم() | ينتظر أن يموت الخيط. |
6) | كثافة العمليات | الحصول على الأولوية () | تقوم بإرجاع أولوية الموضوع. |
7) | فارغ | يضع أولويات() | يغير أولوية الموضوع. |
8) | خيط | الحصول على الاسم () | يقوم بإرجاع اسم الموضوع. |
9) | فارغ | اسم مجموعة() | يغير اسم الموضوع. |
10) | طويل | معرف() | يقوم بإرجاع معرف الموضوع. |
أحد عشر) | منطقية | حي() | إنه يختبر ما إذا كان الخيط حيًا. |
12) | الفراغ ثابت | أَثْمَر() | يؤدي إلى إيقاف كائن مؤشر الترابط الذي يتم تنفيذه حاليًا مؤقتًا والسماح لمؤشرات الترابط الأخرى بالتنفيذ مؤقتًا. |
13) | فارغ | تعليق() | يتم استخدامه لتعليق الخيط. |
14) | فارغ | سيرة ذاتية() | يتم استخدامه لاستئناف الخيط المعلق. |
خمسة عشر) | فارغ | قف() | يتم استخدامه لإيقاف الخيط. |
16) | فارغ | هدم() | يتم استخدامه لتدمير مجموعة الخيوط وجميع مجموعاتها الفرعية. |
17) | منطقية | isDaemon() | إنه يختبر ما إذا كان الخيط عبارة عن خيط خفي. |
18) | فارغ | setDaemon() | يقوم بوضع علامة على الخيط على أنه خفي أو خيط مستخدم. |
19) | فارغ | مقاطعة () | إنه يقاطع الخيط. |
عشرين) | منطقية | تمت مقاطعته() | إنه يختبر ما إذا كان قد تمت مقاطعة مؤشر الترابط. |
واحد وعشرين) | منطقية ثابتة | تمت مقاطعته () | يختبر ما إذا كان قد تمت مقاطعة مؤشر الترابط الحالي. |
22) | كثافة العمليات ثابتة | العدد النشط () | يقوم بإرجاع عدد سلاسل الرسائل النشطة في مجموعة سلاسل المحادثات الحالية. |
23) | فارغ | تحقق الوصول () | يحدد ما إذا كان مؤشر الترابط قيد التشغيل حاليًا لديه إذن لتعديل مؤشر الترابط. |
24) | منطقية ثابتة | هولدلوك () | يتم إرجاعه صحيحًا فقط إذا كان مؤشر الترابط الحالي يحتفظ بقفل الشاشة على الكائن المحدد. |
25) | الفراغ ثابت | تفريغ () | يتم استخدامه لطباعة تتبع مكدس الخيط الحالي إلى دفق الخطأ القياسي. |
26) | StackTraceElement[] | getStackTrace() | تقوم بإرجاع مجموعة من عناصر تتبع المكدس التي تمثل تفريغ المكدس لمؤشر الترابط. |
27) | كثافة العمليات ثابتة | تعداد () | يتم استخدامه لنسخ مجموعة مؤشرات الترابط الخاصة بكل مؤشر ترابط نشط ومجموعتها الفرعية إلى المصفوفة المحددة. |
28) | Thread.State | احصل على الحالة () | يتم استخدامه لإرجاع حالة الخيط. |
29) | مجموعة المواضيع | الحصول علىThreadGroup() | يتم استخدامه لإرجاع مجموعة الخيوط التي ينتمي إليها هذا الموضوع |
30) | خيط | إلى سلسلة() | يتم استخدامه لإرجاع تمثيل سلسلة لمؤشر الترابط هذا، بما في ذلك اسم الخيط وأولويته ومجموعة سلاسل الرسائل. |
31) | فارغ | إعلام () | يتم استخدامه لإعطاء إشعار لمؤشر ترابط واحد فقط ينتظر كائنًا معينًا. |
32) | فارغ | إعلام الكل () | يتم استخدامه لإعطاء إشعار لجميع مؤشرات الترابط المنتظرة لكائن معين. |
33) | فارغ | setContextClassLoader() | يقوم بتعيين السياق ClassLoader للخيط. |
3. 4) | ClassLoader | getContextClassLoader() | تقوم بإرجاع سياق ClassLoader لمؤشر الترابط. |
35) | ثابت Thread.UncaughtExceptionHandler | getDefaultUncaughtExceptionHandler() | تقوم بإرجاع المعالج الافتراضي الذي تم استدعاؤه عندما ينتهي مؤشر الترابط فجأة بسبب استثناء لم يتم اكتشافه. |
36) | الفراغ ثابت | setDefaultUncaughtExceptionHandler() | يقوم بتعيين المعالج الافتراضي الذي يتم استدعاؤه عندما ينتهي مؤشر الترابط فجأة بسبب استثناء لم يتم اكتشافه. |
- كيفية تنفيذ مهمتين بخيطين؟
- كيفية تنفيذ تعدد مؤشرات الترابط بواسطة فئة مجهولة؟
- ما هو برنامج جدولة المواضيع وما الفرق بين الجدولة الوقائية وتقطيع الوقت؟
- ماذا يحدث إذا بدأنا الموضوع مرتين؟
- ماذا يحدث إذا قمنا باستدعاء طريقة التشغيل () بدلاً من طريقة البدء ()؟
- ما هو الغرض من طريقة الانضمام؟
- لماذا يقوم JVM بإنهاء الخيط الخفي في حالة عدم وجود سلاسل رسائل للمستخدم؟
- ما هو هوك الاغلاق؟
- ما هو جمع القمامة؟
- ما هو الغرض من طريقة الإنهاء ()؟
- ماذا تفعل طريقة gc ()؟
- ما هي المزامنة ولماذا تستخدم المزامنة؟
- ما الفرق بين الطريقة المتزامنة والكتلة المتزامنة؟
- ما الطريقتان لإجراء المزامنة الثابتة؟
- ما هو الجمود ومتى يمكن أن يحدث؟
- ما هو التواصل أو التعاون بين الخيوط؟
- تعدد الخيوط
- دورة حياة الخيط
- طريقتان لإنشاء موضوع
- كيفية تنفيذ مهام متعددة عن طريق خيوط متعددة
- جدولة الموضوع
- النوم خيط
- هل يمكننا بدء موضوع مرتين؟
- ماذا يحدث إذا قمنا باستدعاء طريقة التشغيل () بدلاً من طريقة البدء ()؟
- الانضمام إلى موضوع
- تسمية خيط
- أولوية الموضوع
- موضوع الشيطان
- ShutdownHook
- جمع القمامة
- التزامن مع الطريقة المتزامنة
- كتلة متزامنة
- مزامنة ثابتة
- طريق مسدود
- التواصل بين الخيوط