موصى به, 2024

اختيار المحرر

الفرق بين sleep () و wait () الطريقة في Java

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

رسم بياني للمقارنة

أساس للمقارنةينامانتظر
الأساسيةلا تصدر طريقة السكون القفل على كائن حتى تتم مقاطعته.تقوم طريقة الانتظار بإصدار تأمين الكائن لإتاحة تنفيذ الكائنات الأخرى حتى يتم إعلامها أو إعلامها.
صف دراسييتم تعريف طريقة السكون في فئة مؤشر الترابط.يتم تعريف أسلوب الانتظار في فئة كائن.
تزامنلا يلزم استدعاء طريقة السكون داخل سياق متزامن.يجب استدعاء أسلوب الانتظار داخل السياق المتزامن.
إكمالاكتمال تنفيذ أسلوب السكون عند مقاطعة مؤشر ترابط أو انتهت مدة صلاحية وضع السكون.اكتمال تنفيذ أسلوب انتظار عند إعلام () أو أسلوب notifyAll () المقاطعة عليه.
ثابتةطريقة النوم هي طريقة ثابتة.طريقة الانتظار ليست ثابتة ولهذا السبب تحتاج إلى كائن لاستدعاء ذلك.
إعداميتم تنفيذ أسلوب السكون على مؤشر الترابط الحالي.يتم تنفيذ طريقة الانتظار على الكائن.
استثناءInterruptedExceptionIllegalArgumentException ، IllegalMonitorStateException ، InterruptedException.

تعريف طريقة النوم

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

 عامة ساكنة ساكنة باطن النوم (ميلي ثانية طويلة)؛ نوم باطل ثابت عام (ميلي ثانية طويلة ونانوثانية نانوية) ؛ 

في النموذجين أعلاه ، يمكنك ملاحظة الوقت المذكور في كل من طريقة النوم. ويرجع ذلك إلى أن مؤشر الترابط ينام دائمًا لفترة محددة مذكورة في المعلمة. يمكن مقاطعة طريقة النوم من قبل أي موضوع آخر أثناء تنفيذه ؛ وبالتالي ، يمكن أن يقذف InterruptedExecption. يجب الانتباه إلى أنه يتم التعامل مع الاستثناء إما عن طريق حظر التجريب / المحاولة أو عن طريق استخدام الكلمات الأساسية بخلاف ذلك ، سيؤدي ذلك إلى خطأ وقت التحويل البرمجي. تحتفظ طريقة السكون بقفل الكائن الحالي في التنفيذ ولا تسمح لأي كائن آخر بالتنفيذ حتى تنتهي من تنفيذه.

تعريف طريقة الانتظار

انتظر هو الأسلوب المحدد في فئة كائن . يتم استخدام أسلوب الانتظار عند تكافح عدة مهام (مؤشرات الترابط) لنفس المورد في وقت واحد. طريقة الانتظار عند استدعائها تقوم بتحرير القفل على الكائن الذي استدعى طريقة الانتظار. ووفر فرصة لجسم آخر ليتم تنفيذه حتى يتم استدعاء أسلوب الإخطار الذي يستأنف القفل على الكائن الصادر بطريقة الانتظار. يحتوي أسلوب الانتظار على النموذج التالي.

 انتظر()؛ انتظر (ميليث طويل) ؛ الانتظار (ميلي ثانية طويلة ، نانوثانية int) ؛ 

كما في الأشكال الثلاثة أعلاه لطريقة الانتظار ، لا تحتوي الطريقة الأولى على معلمة وقت ، فهذا يعني أن تنفيذ أسلوب الانتظار سيستمر حتى الإعلام ، أو لا يتم استدعاء أسلوب notifyAll. تحتوي باقي الأسلوبين على معلمات وقت. حتى يتم تنفيذها حتى انتهاء الوقت أو حتى إشعار أو يتم استدعاء noitfyAll الأسلوب قبل انتهاء الوقت. يمكن للطريقة الانتظار رمي الاستثناءات. IllegalArgumentException ، إذا تم تمرير وسيطة الوقت سالبة. IllegalMonitorStateException ، إذا كان مؤشر الترابط الحالي لا يستخدم المورد. InterruptedException ، إذا تمت مقاطعة طريقة الانتظار.

الاختلافات الرئيسية بين النوم وطريقة الانتظار في جاوة

  1. النقطة الرئيسية التي تميز طريقة النوم والانتظار هي أن طريقة النوم تحمل القفل على الكائن حتى تتم مقاطعته أو انتهاء وقته. ومع ذلك ، تقوم طريقة الانتظار بتحرير القفل على الكائن الذي يستدعيها ويمنح الكائنات الأخرى فرصة التنفيذ.
  2. يتم تعريف أسلوب السكون في فئة مؤشر الترابط بينما يتم تعريف أسلوب الانتظار في فئة كائن .
  3. لا يجب استدعاء طريقة النوم من السياق المتزامن. ولكن يجب استدعاء أسلوب الانتظار من المزامنة.
  4. استيقظت طريقة النوم إذا انتهى وقت الطريقة أو توقفها الخيط الآخر. استيقظ طريقة الانتظار
    عندما يتم إعلام أو إعلام كل طريقة.
  5. طريقة النوم هي طريقة ثابتة بينما طريقة الانتظار ليست طريقة ثابتة .
  6. يتم تنفيذ أسلوب السكون على مؤشر الترابط الحالي بينما يتم تنفيذ أسلوب الانتظار على الكائن الذي يستدعي ذلك.
  7. الاستثناء بطرح أسلوب Sleep هو InterruptedException بينما يكون الاستثناءات thrwon بواسطة أسلوب الانتظار IllegalArgumentException ، IllegalMonitorStateException ، InterruptedException .

استنتاج:

عندما تريد عدة مؤشرات ترابط استخدام نفس المورد واحداً تلو الآخر ، يجب استخدام أسلوب الانتظار. عندما لا يرغب مؤشر الترابط في تنفيذ أي مهمة ، يجب استخدام طريقة السكون.

Top