Java Timer و TimerTask و Reminder Class تعليمي مع مثال

نشرت: 2021-02-04
Java Timer و TimerTask و Reminder Class تعليمي مع مثال

java.util.Timer هي فئة أدوات يمكن استخدامها لجدولة موضوع ليتم تنفيذه في وقت معين في المستقبل. يمكن استخدام فئة Java Timer لجدولة مهمة ليتم تشغيلها مرة واحدة أو ليتم تشغيلها على فترات منتظمة.

java.util.TimerTask هي فئة مجردة تنفذ واجهة Runnable ونحتاج إلى توسيع هذه الفئة لإنشاء TimerTask الخاص بنا والذي يمكن جدولته باستخدام فئة java Timer .

فئة الموقت هي مؤشر ترابط آمن ويمكن للخيوط المتعددة مشاركة كائن مؤقت واحد دون الحاجة إلى مزامنة خارجية. تستخدم فئة المؤقت java.util.TaskQueue لإضافة مهام في فترة زمنية محددة وفي أي وقت يمكن أن يكون هناك مؤشر ترابط واحد فقط يقوم بتشغيل TimerTask ، على سبيل المثال إذا كنت تقوم بإنشاء Timer للتشغيل كل 10 ثوانٍ ولكن تنفيذ سلسلة واحدة يستغرق 20 ثانية ، ثم سيواصل كائن Timer إضافة المهام إلى قائمة الانتظار وبمجرد الانتهاء من مؤشر ترابط واحد ، فإنه سيبلغ قائمة الانتظار وسيبدأ مؤشر ترابط آخر في التنفيذ.

فئة مؤقت جافا

تستخدم فئة المؤقت أساليب انتظار الكائن وإخطارها لجدولة المهام. TimerTask هي abstract class ونحن نرثها لتوفير تنفيذ ملموس. implements فئة Runnable interface Runnable ، لذا فهي عبارة عن مؤشر ترابط ، وبالتالي فإن تطبيقك لـ TimerTask هو أيضًا مؤشر ترابط.

مثال على Timer و TimerTask بسيط للغاية: يتم تنفيذ المهمة بمجرد 5 seconds .

نتيجة:

يوضح هذا البرنامج البسيط الأجزاء الأساسية التالية لتنفيذ وجدولة مهمة ليتم تنفيذها بواسطة مؤشر ترابط مؤقت:

  • قم بتطبيق فئة فرعية مخصصة لـ TimerTask . يحتوي أسلوب run على التعليمات البرمجية التي تقوم بتنفيذ المهمة. في هذا المثال ، تم تسمية الفئة الفرعية CrunchifyReminder.
  • قم بإنشاء مؤشر ترابط عن طريق إنشاء مثيل لفئة Timer .
  • إنشاء كائن TimerTask ( new CrunchifyReminder() ).
  • جدولة مهمة المؤقت للتنفيذ.

كيف يمكنني تنفيذ TimerTask بشكل متكرر؟

نتيجة:

بشكل افتراضي ، يستمر البرنامج في العمل طالما أن مؤشرات ترابط المؤقت الخاصة به تعمل. يمكنك إنهاء سلسلة عداد بأربع طرق:

  • استدعاء cancel على جهاز ضبط الوقت. يمكنك القيام بذلك من أي مكان في البرنامج ، مثل طريقة run مهمة المؤقت.
  • اجعل خيط المؤقت "خفيًا" من خلال إنشاء المؤقت مثل هذا: new Timer(true) . إذا كانت المواضيع الوحيدة المتبقية في البرنامج هي خيوط الخفي ، فسيتم إنهاء البرنامج.
  • بعد الانتهاء من تنفيذ جميع المهام المجدولة لجهاز ضبط الوقت ، قم بإزالة كافة المراجع إلى كائن Timer . في النهاية ، سينتهي مؤشر ترابط جهاز ضبط الوقت.
  • قم باستدعاء طريقة System.exit ، والتي تجعل البرنامج بأكمله (وجميع خيوطه) يخرج.