تعدد العمليات في Java - تعلم بالأمثلة

نشرت: 2022-06-23

Java هي لغة برمجة تدعم البرامج متعددة مؤشرات الترابط. تستوعب البرامج متعددة مؤشرات الترابط جزأين أو أكثر (خيوط) تعمل في وقت واحد ، وتعالج مهام مختلفة ، مما يتيح الاستخدام الأمثل لوحدة المعالجة المركزية. Multi-threading هو امتداد لتعدد المهام. يمكن تعريف المهام المتعددة على أنها ميزة تشترك فيها عمليات متعددة في مورد معالجة مشترك مثل وحدة المعالجة المركزية.

تعدد فروع تعدد مفهوم تعدد المهام لتطبيقات مختلفة حيث يمكن تقسيم العمليات المحددة إلى سلاسل فردية أصغر.

يتم تشغيل كل من مؤشرات الترابط هذه بشكل متزامن ومستقل مع مسارات تنفيذ مختلفة بحيث لا يؤثر الاستثناء في مؤشر ترابط واحد على أداء الآخرين.

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

جدول المحتويات

ما هو تعدد العمليات في جافا؟

تعدد العمليات في Java هو المكان الذي يتم فيه تنفيذ خيوط متعددة في وقت واحد لزيادة وقت وحدة المعالجة المركزية إلى أقصى حد.

دورة حياة الخيط

الخيوط لها مراحل مختلفة في دورة حياتها. وهم على النحو التالي:

  • جديد: يبدأ الخيط دورة حياته كخيط جديد. يبقى في هذه المرحلة حديثي الولادة حتى يقوم البرنامج بتشغيل الخيط.
  • Runnable: الخيط المولود يدخل مرحلة التشغيل عندما يبدأ البرنامج. يبدأ الخيط في تنفيذ مهمته في هذه المرحلة.
  • الانتظار: هذه مرحلة انتقالية حيث ينتظر مؤشر ترابط آخر لإكمال مهمته. يتحول خيط في مرحلة الانتظار إلى مرحلة قابلة للتشغيل بعد تلقي إشارة من مؤشرات ترابط أخرى.
  • الانتظار المحدد بوقت: هذه مرحلة يمكن أن يدخلها مؤشر ترابط قابل للتشغيل لفترة زمنية محددة. تعود الخيوط في هذه المرحلة إلى المرحلة القابلة للتشغيل في نهاية الفترة الزمنية المحددة.
  • ميت: هذه هي المرحلة الأخيرة في دورة حياة الخيط. يدخل الخيط في هذه المرحلة بعد الانتهاء من مهمته.

فوائد تعدد العمليات في Java

  • نظرًا لأن سلاسل العمليات في Java مستقلة ، فإن Java multithreading لا يحظر المستخدمين ، ويمكنهم إجراء العديد من العمليات في وقت واحد.
  • نظرًا لأن تعدد مؤشرات الترابط في Java يتيح عمليات متعددة ، فهو يوفر الوقت والفعالية.
  • يمكن أن يعمل البرنامج بشكل مستمر حتى إذا تم اعتراض جزء منه.
  • يحسن الأداء مقابل البرامج الموازية التقليدية التي تستخدم عمليات متعددة.
  • إنشاء برامج فعالة تستغل وقت وحدة المعالجة المركزية على أكمل وجه.
  • يحسن وقت استجابة التطبيقات المعقدة بشكل كبير.
  • يتطلب موارد أقل مقارنة بالبرامج التقليدية الموازية.

ترتيب أولوية الموضوع

يحدد نظام التشغيل جدول تنفيذ مؤشر الترابط بناءً على أولوية مؤشر الترابط. يتم تحديد أولوية سلسلة الرسائل بناءً على قيمة ثابتها.

  • يحصل الثابت 1 على الحد الأدنى من الأولوية (MIN_PRIORITY)
  • يحصل الثابت 5 على أولوية عادية (NORM_PRIORITY)
  • يحصل الثابت 10 على الأولوية القصوى (MAX_PRIORITY)

الدورات والمقالات الشعبية في هندسة البرمجيات

البرامج الشعبية
برنامج PG التنفيذي في تطوير البرمجيات - IIIT ب برنامج شهادة Blockchain - PURDUE برنامج شهادة الأمن السيبراني - PURDUE ماجستير في علوم الكمبيوتر - IIIT ب
مقالات شعبية أخرى
راتب Cloud Engineer في الولايات المتحدة 2021-22 رواتب AWS Solution Architect في الولايات المتحدة راتب المطور الخلفي في الولايات المتحدة راتب المطور الأمامي في الولايات المتحدة
راتب مطور الويب في الولايات المتحدة الأمريكية أسئلة مقابلة Scrum Master في عام 2022 كيف تبدأ مهنة في الأمن السيبراني في عام 2022؟ الخيارات المهنية في الولايات المتحدة لطلاب الهندسة

كيف تصنع موضوع في جافا؟

يمكن إنشاء الخيوط في Java بطريقتين:

  1. تمديد فئة الموضوع
  2. تنفيذ واجهة قابلة للتشغيل

إنشاء سلسلة من خلال توسيع فئة الموضوع

فيما يلي بعض الطرق لفئة الخيوط ووظائفها.

  • getName (): للحصول على اسم الموضوع
  • getPriority (): للحصول على أولوية الموضوع
  • is Alive (): لمعرفة ما إذا كان هناك موضوع قيد التشغيل
  • انضم (): انتظر إنهاء الموضوع
  • run (): نقطة دخول الخيط
  • sleep (): لتعليق خيط في نافذة زمنية محددة.
  • start (): لتنشيط خيط من خلال طريقة تشغيله ().

الخطوة 1 : تجاوز طريقة run () الواردة في فئة مؤشر الترابط. يعمل هذا كنقطة دخول للخيط ، ويجب تغليف منطق البرنامج بالكامل في 4this.

صيغة طريقة run () هي كما يلي:

تشغيل الفراغ العام ()

الخطوة 2: قم ببدء كائن مؤشر الترابط بواسطة طريقة start () التي يكون تركيبها عبارة عن start () فارغ .

فيما يلي أمثلة على برنامج متعدد مؤشرات الترابط في Java:

مثال 1:

تمدد فئة MultithreadingDemo مؤشر الترابط {

تشغيل باطل عام () {

System.out.println ("خيطي قيد التشغيل.") ؛

}

العامة الثابتة الفراغ الرئيسي (سلاسل سلسلة []) {

MultithreadingDemo obj = new MultithreadingDemo () ؛

obj.start () ،

}

}

سيكون ناتج البرنامج أعلاه:

موضوع بلدي قيد التشغيل.

المثال 2:

يمتد عدد فئة الخيط

{

عدد()

{

سوبر ("خيطي يمتد") ؛

System.out.println ("تم إنشاء خيطي" + هذا) ؛

بداية()؛

}

تشغيل الفراغ العام ()

{

محاولة

{

لـ (int i = 0 ؛ i <10 ؛ i ++)

{

System.out.println ("طباعة العد" + i) ؛

Thread.sleep (1000) ؛

}

}

catch (InterruptException هـ)

{

System.out.println ("تم مقاطعة خيطي") ؛

}

System.out.println ("انتهى خيطي") ؛

}

}

تمديد الفئة

{

الرئيسية العامة الثابتة الفراغ (سلاسل سلسلة [])

{

Count cnt = new Count () ؛

محاولة

{

بينما (cnt.isAlive ())

{

System.out.println ("الخيط الرئيسي سوف يظل حياً حتى يعيش الخيط الفرعي") ؛

Thread.sleep (1500) ؛

}

}

catch (InterruptException هـ)

{

System.out.println ("توقف الخيط الرئيسي") ؛

}

System.out.println ("تم إنهاء تشغيل مؤشر الترابط الرئيسي") ؛

}

}

سيكون ناتج البرنامج أعلاه

تم إنشاء سلسلة المحادثات الخاصة بي [الموضوع القابل للتشغيل ، 5 ، الرئيسي]

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 0

طباعة العد 1

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 2

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 3

طباعة العد 4

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 5

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 6

طباعة العد 7

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 8

سيكون الخيط الرئيسي على قيد الحياة حتى يعيش الخيط الفرعي

طباعة العد 9

تم إنهاء تشغيل الموضوع الخاص بي

تم إنهاء تشغيل الخيط الرئيسي

إنشاء سلسلة رسائل عن طريق تنفيذ واجهة قابلة للتشغيل

هناك ثلاث خطوات مهمة يجب اتباعها أثناء استخدام هذه الطريقة.

الخطوة 1 : يجب تنفيذ طريقة run () بواسطة واجهة قابلة للتشغيل. تعمل طريقة () هذه كنقطة دخول لمؤشر الترابط ويجب أن تحتوي على منطق البرنامج بالكامل.

صيغة طريقة run () هي

تشغيل الفراغ العام ()

الخطوة 2: يجب تنشيط كائن مؤشر الترابط باستخدام المُنشئ الوارد أدناه.

الموضوع (Runnable threadObj ، String threadName) ؛

هنا ، threadObj يعمل كفئة تقوم بتنفيذ الواجهة القابلة للتشغيل ، واسم مؤشر الترابط هو الاسم المعطى للخيط الجديد.

الخطوة 3: بعد إنشاء كائن مؤشر الترابط ، يمكن بدئه بواسطة طريقة start () التي تنفذ طريقة run ().

صيغة طريقة start () هي كما يلي.

بداية باطلة () ؛

يمكن العثور هنا على مثال لإنشاء سلسلة رسائل من خلال تنفيذ واجهة قابلة للتشغيل .

لمعرفة المزيد حول Java multithreading وتطوير البرامج ، نوصي بالتسجيل في برنامج الدراسات العليا التنفيذي في تطوير البرمجيات الذي يقدمه معهد IIIT Bangalore بالتعاون مع upGrad.

برنامج Executive PG في تطوير البرمجيات عبارة عن برنامج عبر الإنترنت مدته 13 شهرًا مصمم لمساعدة المهنيين العاملين على تحقيق قفزة عملاقة في حياتهم المهنية من خلال دراسات الحالة والمشاريع ذات الصلة بالصناعة. يتضمن البرنامج أيضًا أكثر من عشر جلسات مباشرة من خبراء الصناعة لمساعدة المرشحين على التعلم بشكل أفضل.

يشتمل البرنامج على مشاريع صناعية لمساعدة المرشحين في الحصول على خبرة عملية وتعرض مناسب للصناعة لجعل تعلمهم وثيق الصلة وعمليًا. سيؤدي إكمال البرنامج إلى مكافأة المرشحين بشهادة IIIT B المرغوبة وحالة الخريجين.

يأتي البرنامج مع دعم تحديد المستوى بزاوية 360 درجة من upGrad والذي أثر على أكثر من 40.000 متعلم مدفوع الأجر من جميع أنحاء العالم لجعل الأمور أفضل. تمتلك upGrad قاعدة متعلمين من أكثر من 85 دولة توفر فرصة لا تقدر بثمن للحصول على شبكة عالمية من الأقران للمرشحين.

ما هو الفرق بين تعدد المهام وتعدد مؤشرات الترابط في جافا؟

تعدد المهام هو العملية التي يمكن من خلالها تنفيذ العديد من المهام في وقت واحد ، وتعدد العمليات هو عملية تنفيذ سلاسل رسائل متعددة في نفس الوقت ، حيث يؤدي كل مؤشر ترابط مهمة مختلفة.

هل الوراثة المتعددة مدعومة بواسطة Java؟

تدعم لغة البرمجة Java الوراثة المتعددة ، وهي عملية يقوم فيها الفصل بتنفيذ أكثر من واجهة واحدة. يمكن أن يكون للفصل تطبيقات مختلفة لطريقة (افتراضية أو ثابتة) في الواجهات. يمكن تنفيذ الوراثة المتعددة في Java فقط مع الواجهات وليس الفئات ، على عكس لغة C ++.

هل يمكن أن يؤدي تعدد مؤشرات الترابط إلى تحسين أداء Java؟

يعمل Multithreading على تحسين أداء Java من خلال تمكين وحدات المعالجة المركزية المتعددة من التعامل مع نفس المشكلة. لا يؤدي ذلك إلى تسريع العملية فحسب ، بل يساعد أيضًا في حل المشكلات بكفاءة.