في لغة برمجة جافا ، يمكن استخدام تأخير لإنشاء وقفة في تنفيذ البرنامج. يمكن أن يكون هذا مفيدا ، على سبيل المثال ، لإنشاء تأثيرات الرسوم المتحركة أو لإضافة تأخير بين تنفيذ إجراءات معينة. في هذه المقالة ، سنلقي نظرة على العديد من الأمثلة حول كيفية إجراء تأخير في جافا ، وكذلك شرح كيفية عمل هذه الوظيفة.
واحدة من أسهل الطرق لإنشاء تأخير في جافا هو استخدام مؤشر الترابط.طريقة النوم (). تتيح لك هذه الطريقة "وضع السكون" للتيار الحالي لعدد معين من المللي ثانية. على سبيل المثال ، سوف التعليمات البرمجية التالية إنشاء تأخير ثانية واحدة:
محاولة {
الموضوع.النوم (1000);
} الصيد (مقاطعة إكستسيبتيون ه) {
ه. برينتستاكتريس();
}
في هذا المثال ، نستخدم كتلة محاولة الصيد للتعامل مع استثناء إنتيرستيدكسيبتيون التي قد تحدث عند استدعاء أسلوب النوم. تقوم طريقة برينتستاكتريس() بإخراج معلومات حول الاستثناء إلى وحدة التحكم في حالة حدوثه.
- جافا الكمون: ما هذا?
- لماذا أحتاج التأخير في جافا?
- مثال بسيط على التأخير في جافا
- الموضوع.النوم () الطريقة: الاستخدام والشرح
- تأخير باستخدام الموقت
- كيفية جعل تأخير باستخدام الانتظار وإخطار
- كيفية إنشاء تأخير باستخدام خدمة جدولة
- تأخير للرسوم المتحركة في جافا
- سؤال وجواب
- كيف يمكنني تأخير تنفيذ برنامج في جافا?
- ماذا يحدث إذا كنت استدعاء الموضوع.النوم () في الموضوع الرئيسي لتنفيذ البرنامج?
- ما هي الطرق الأخرى التي يمكنني إنشاء تأخير في تنفيذ برنامج في جافا?
جافا الكمون: ما هذا?
التأخير في جافا هو آلية تسمح للبرنامج بإيقاف تنفيذه مؤقتا لفترة من الوقت. قد تكون هناك حاجة إلى التأخير في مجموعة متنوعة من المواقف ، على سبيل المثال ، لمحاكاة الانتظار أو نقل البيانات أو مزامنة التدفقات أو ببساطة لإنشاء إيقاف مؤقت في تنفيذ البرنامج.
يوفر جافا عدة طرق لتنفيذ الكمون:
- باستخدام الخيط.طريقة النوم ().
- باستخدام وحدة الوقت.طريقة ثانية.
- باستخدام طريقة الخيط.العائد ().
- باستخدام أجهزة ضبط الوقت والمهام في الوقت المناسب.
تسمح لك طريقة السكون () بإيقاف تنفيذ مؤشر الترابط الحالي مؤقتا لعدد محدد من المللي ثانية. على سبيل المثال ، موضوع.النوم(1000) سيخلق تأخير 1 ثانية.
توفر فئة تايم يونيت وحدات زمنية مختلفة للاستخدام مع طريقة النوم (). على سبيل المثال ، يمكنك استخدام تايم يونيت.ثواني.النوم (1) لخلق تأخير من 1 ثانية.
تسمح لك طريقة العائد () بتعليق تنفيذ مؤشر الترابط الحالي مؤقتا والسماح بتنفيذ مؤشرات الترابط الأخرى. ومع ذلك ، فإن هذه الطريقة لا تضمن التأخير لفترة معينة ويجب أن يكون استخدامها حذرا.
كما يوفر جافا الموقت والآليات الموقت المهمة التي تسمح لك لتحديد تأخير في تنفيذ رمز معين بعد فترة زمنية معينة. يمكن أن يكون هذا مفيدا ، على سبيل المثال ، لتنفيذ إجراء معين بعد مرور بعض الوقت على بدء البرنامج أو لأداء مهمة بانتظام على فترات زمنية معينة.
يعتمد اختيار طريقة التأخير المناسبة على الموقف المحدد ومتطلبات البرنامج. من المهم أن تضع في اعتبارك أن زمن الوصول في جافا يمكن أن يؤثر على أداء البرنامج ويجب استخدامه بحذر.
لماذا أحتاج التأخير في جافا?
التأخير (أو توقف) في جافا هي أداة هامة للمبرمجين لإدارة فترات زمنية أثناء تنفيذ البرنامج. فيما يلي بعض الأسباب الرئيسية التي تجعل التأخير مفيدا:
التزامن والاتصال بين مؤشرات الترابط: يمكن استخدام التأخيرات للتحكم في التفاعل بين مؤشرات ترابط متعددة في تطبيق متعدد مؤشرات الترابط. على سبيل المثال ، إذا كان على مؤشر ترابط واحد الانتظار حتى ينتهي مؤشر ترابط آخر ، فيمكنك استخدام تأخير قبل الاستمرار في تنفيذ التعليمات البرمجية.
الرسوم المتحركة والتصور: تسمح لك التأخيرات بتحريك عناصر واجهة المستخدم بسلاسة أو تصور بعض العمليات ، مثل فرز الخوارزميات أو البحث.
الاختبار والتصحيح: يمكن أن تكون التأخيرات مفيدة عند إنشاء سيناريوهات اختبار عندما تحتاج إلى اختبار كيفية تصرف التطبيق في فترة زمنية معينة. يمكن أن تكون مفيدة أيضا عند تصحيح التعليمات البرمجية لمراقبة تنفيذ البرنامج والبحث عن الأخطاء المحتملة.
محاكاة في الوقت الحقيقي: يمكن استخدام التأخيرات لإنشاء تأثير في الوقت الفعلي في التطبيقات حيث يلزم محاكاة عمليات أو أحداث معينة تحدث في العالم الحقيقي في فترات زمنية معينة.
هذه ليست سوى بعض من احتمالات استخدام التأخير في جافا. بالطبع ، قد يكون لكل تطبيق ميزاته ومتطلباته الخاصة ، والتي قد تتطلب استخدام التأخير في الكود.
مثال بسيط على التأخير في جافا
لإنشاء تأخير في جافا ، يمكنك استخدام مؤشر الترابط.طريقة النوم (). هذا الأسلوب يعلق تنفيذ مؤشر الترابط لعدد محدد من ميلي ثانية.
Пример кода:
public class DelayExample {
public static void main(String[] args) {
System.out.println("Начало выполнения программы");
try {
Thread.sleep(2000); // задержка в 2 секунды
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Завершение программы");
}
}
في هذا المثال ، يتم عرض الرسالة "بدء تنفيذ البرنامج" أولا ، ثم هناك تأخير 2 ثانية في التنفيذ باستخدام مؤشر الترابط.طريقة النوم (2000) ، وفي النهاية يتم عرض الرسالة "إنهاء البرنامج".
الموضوع.النوم () الطريقة: الاستخدام والشرح
طريقة الخيط.النوم () هي واحدة من الطرق لتأخير تنفيذ برنامج في لغة جافا. انها تسمح لك لوقف تنفيذ مؤشر الترابط الحالي لعدد محدد من ميلي ثانية.
بناء الجملة من موضوع.طريقة النوم () تبدو كما يلي:
العامة ثابت الفراغ النوم (ميليس طويلة) يلقي انقطع إكستريبتيونهنا ميليس هو عدد ميلي ثانية التي يجب تعليق تنفيذ مؤشر الترابط.
قد يختلف العدد المحدد للمللي ثانية حسب التأخير المطلوب. على سبيل المثال ، لإيقاف تنفيذ مؤشر ترابط لمدة 1 ثانية ، يمكنك استخدام التعليمات البرمجية التالية:
محاولة {
الموضوع.النوم (1000);
} الصيد (مقاطعة إكستسيبتيون ه) {
ه. برينتستاكتريس();
}
الخيط.النوم () طريقة يمكن رمي استثناء إنتيرستيدكسيبتيون. للقيام بذلك ، يتم استخدام بناء محاولة الصيد للتعامل مع استثناء في حالة حدوثه.
باستخدام طريقة الخيط.غالبا ما يكون النوم() مفيدا في السيناريوهات حيث يكون من الضروري إضافة تأخير بين تنفيذ إجراءات معينة أو لترتيب توقف مؤقت في البرنامج لإعطاء مؤشرات الترابط الأخرى الفرصة لإكمال مهامها.
على سبيل المثال ، تخيل موقفا نريد فيه إنشاء رسم متحرك في وحدة التحكم وتعيين إيقاف مؤقت بين الإطارات. يمكننا استخدام الخيط.النوم () طريقة للقيام بذلك:
ل (إنت أنا = 0 ؛ أنا < 10 ؛ أنا {) {
النظام.خارج.برينتلن ("الإطار" + أنا);
الموضوع.النوم (1000);
}
في الكود أعلاه ، سيتم عرض كل إطار على الشاشة بفاصل 1 ثانية.
باستخدام الخيط.وينبغي النظر في طريقة النوم () وتأخذ في الاعتبار خصوصيات برنامج أو مشروع معين. يمكن أن تؤدي التأخيرات غير الضرورية أو المحددة بشكل غير صحيح إلى تأثيرات غير مرغوب فيها وإبطاء البرنامج.
في الختام ، الخيط.النوم () الأسلوب هو وسيلة بسيطة ومريحة لإضافة تأخير لتنفيذ موضوع في لغة جافا. يسمح لك بإيقاف تنفيذ البرنامج مؤقتا ويمكن أن يكون مفيدا في مواقف مختلفة ، على سبيل المثال ، لإنشاء فترات توقف مؤقت أو رسوم متحركة أو تأخير في تشغيل البرنامج.
تأخير باستخدام الموقت
في جافا ، وهناك عدة طرق لتنفيذ تأخير تنفيذ البرنامج. واحدة من هذه الطرق هي استخدام فئة الموقت. الموقت يسمح لك لاستدعاء مهمة معينة (أو طريقة) مع تأخير معين.
لاستخدام الموقت ، تحتاج أولا إلى إنشاء مثيل من هذه الفئة:
الموقت الموقت = الموقت الجديد();
ثم تحتاج إلى إنشاء مثيل من فئة تيميرتاسك ، والتي سوف تمثل المهمة التي يتعين القيام بها. يجب أن تتجاوز هذه الفئة طريقة التشغيل () ، والتي ستحتوي على رمز المهمة:
مهمة تيميرتاسك = تيميرتاسك جديدة () {
تشغيل الفراغ العام () {
// رمز المهمة
}
};
الآن يمكن جدولة المهمة للتنفيذ مع تأخير محدد:
مؤقت.الجدول الزمني (مهمة ، تأخير);
هو التأخير بالمللي ثانية.
وبالإضافة إلى ذلك ، الموقت كما يسمح لك لجدولة مهمة متكررة مع تأخير محدد والفاصل الزمني:
مؤقت.الجدول الزمني (المهمة ، التأخير ، الفترة);
- هذا هو الفاصل الزمني بالمللي ثانية بين إطلاق المهمة.
لإيقاف تنفيذ مهمة ، يمكنك استخدام طريقة الإلغاء ():
المهمة.إلغاء();
الموقت هو أداة قوية لإدارة التأخير الوقت في جافا. ومع ذلك ، فإنه يحتوي على بعض القيود ، مثل عدم كفاية الدقة والمشاكل المحتملة مع تعدد مؤشرات الترابط. في حالة التأخير المعقدة وإدارة الوقت ، فمن المستحسن لاستكشاف ميزات جافا الأخرى ، مثل الطبقات من جافا.حزمة أوتيل.متزامن.
كيفية جعل تأخير باستخدام الانتظار وإخطار
في لغة جافا ، هناك عدة طرق لإنشاء تأخير في تنفيذ البرنامج. إحدى هذه الطرق هي استخدام طرق الانتظار () والإخطار (). تسمح لك هذه الطرق بمزامنة تنفيذ سلاسل الرسائل وإدارة جدولتها.
باستخدام طريقة الانتظار () ، يمكن لمؤشر الترابط نقل التحكم إلى مؤشر ترابط آخر والانتظار حتى يتم استيفاء شرط معين. عندما يتم استيفاء الشرط ، سيتم إلغاء حظر مؤشر الترابط ومواصلة تنفيذه.
يتم استخدام طريقة الإخطار () لإعلام مؤشر ترابط الانتظار بأن الشرط قد تم استيفائه ويمكنه متابعة تنفيذه. يجب استدعاء هذه الطريقة في القسم الحرج ، أي داخل الكتلة المتزامنة.
النظر في مثال يتم فيه إنشاء اثنين من المواضيع التي تطبع الأرقام من 1 إلى 5 مع تأخير:
فئة عامة تأخيرعلى سبيل المثال {
العامة ثابت الفراغ الرئيسي (سلسلة[] الحجج) {
قفل الكائن النهائي = كائن جديد ();
مؤشر ترابط 1 = مؤشر ترابط جديد (() - > {
متزامنة (قفل) {
ل (إنت أنا = 1 ؛ أنا < = 5 ؛ أنا i) {
النظام.خارج.برينتلن (ط);
محاولة {
الموضوع.النوم (1000);
} الصيد (مقاطعة إكستسيبتيون ه) {
ه. برينتستاكتريس();
}
}
قفل.يخطر();
}
});
مؤشر ترابط 2 = مؤشر ترابط جديد (() - > {
متزامنة (قفل) {
محاولة {
قفل.انتظر();
} الصيد (مقاطعة إكستسيبتيون ه) {
ه. برينتستاكتريس();
}
النظام.خارج.برينتلن ("Работа продолжена");
}
});
خيط2.بداية();
خيط1.بداية();
}
}
في هذا المثال ، يتم إنشاء اثنين من المواضيع: ثرياد1 و ثرياد2. يقوم مؤشر ترابط 1 بإخراج الأرقام من 1 إلى 5 مع تأخير لمدة ثانية واحدة ثم يستدعي طريقة الإخطار () لإخطار مؤشر ترابط 2 المتوقع.
يقوم مؤشر ترابط 2 أولا بتأمين كائن القفل باستخدام العبارة المتزامنة. ثم يتم استدعاء طريقة الانتظار () ، مما يجعل خيط الخيط 2 انتظر حتى يتم استدعاء طريقة الإخطار () في خيط الخيط 1. بعد إلغاء الحظر ، يعرض الدفق الرسالة"استمر العمل".
يتيح لك استخدام طرق الانتظار () والإخطار () التحكم في تنفيذ مؤشرات الترابط وتنظيم التأخيرات في البرنامج.
كيفية إنشاء تأخير باستخدام خدمة جدولة
.
يحتاج إلى تنفيذ الخطوات التالية:
- . حدد عدد مؤشرات الترابط التي سيتم استخدامها لإكمال المهام.
- تحديد المهمة التي تحتاج إلى أن تكتمل مع تأخير.
- لبدء المهمة مع التأخير المحدد.
- لإنهاء عملها بشكل صحيح بعد الانتهاء من المهمة.
:
استيراد جافا.أوتيل.متزامن.منفذي;
استيراد جافا.أوتيل.متزامن.الخدمة المجدولة;
استيراد جافا.أوتيل.متزامن.تايم يونيت;
فئة عامة تأخيرعلى سبيل المثال {
public static void main(String[] args) {
// Создание экземпляра ScheduledExecutorService
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// Определение задачи
Runnable task = () -> {
System.out.println("Задача выполнена");
};
// Запуск задачи с задержкой в 3 секунды
executor.schedule(task, 3, TimeUnit.SECONDS);
// Завершение работы ScheduledExecutorService
executor.shutdown();
try {
executor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.برينتستاكتريس();
}
}
}
في هذا المثال ، تقوم المهمة بإخراج الرسالة" اكتملت المهمة " بعد 3 ثوان من بدء التشغيل. بعد اكتمال المهمة ، يتم إنهاء مؤشرات الترابط من مجموعة المهام قيد التشغيل.
يسمح لك لإدارة بمرونة التأخير وتنفيذ المهام في برنامج جافا.
تأخير للرسوم المتحركة في جافا
تعد الرسوم المتحركة جزءا مهما من تصور تطبيقات البرامج. ومع ذلك ، لإنشاء رسوم متحركة سلسة وواقعية ، يلزم تأخير بين الإطارات. في لغة البرمجة جافا ، وهناك عدة طرق لتنفيذ تأخير للرسوم المتحركة.
import java.util.concurrent.TimeUnit;
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(new Runnable() {