Thread.sleep مع Duration
استخدم Duration للحصول على قيم زمنية موثّقة ذاتياً.
مقارنة الكود
✕ Java 8
// What unit is 5000? ms? us? Thread.sleep(5000); // 2.5 seconds: math required Thread.sleep(2500);
✓ Java 19+
Thread.sleep(
Duration.ofSeconds(5)
);
Thread.sleep(
Duration.ofMillis(2500)
);
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
موثّقة ذاتياً
Duration.ofSeconds(5) لا لبس فيه.
آمنة من حيث الوحدات
لا خطأ بتمرير ميكرو ثانية بدلاً من ميلي ثانية.
قابلة للتركيب
عمليات Duration الحسابية: plus() و multipliedBy() وغيرها.
الأسلوب القديم
ميلي ثانية
الأسلوب الحديث
Duration
منذ JDK
19
الصعوبة
مبتدئ
دعم JDK
Thread.sleep مع Duration
متاح
متاح على نطاق واسع منذ JDK 19 (سبتمبر 2022)
كيف يعمل
تجعل Thread.sleep(Duration) وحدة الوقت صريحة. لا مزيد من التخمين هل 5000 تعني ميلي ثانية أم ميكرو ثانية. تعمل مع Duration.ofSeconds و ofMillis و ofMinutes وغيرها.
توثيق ذو صلة