Concurrency مبتدئ

استخدم 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
الصعوبة
مبتدئ
Thread.sleep مع Duration
متاح

متاح على نطاق واسع منذ JDK 19 (سبتمبر 2022)

تجعل Thread.sleep(Duration) وحدة الوقت صريحة. لا مزيد من التخمين هل 5000 تعني ميلي ثانية أم ميكرو ثانية. تعمل مع Duration.ofSeconds و ofMillis و ofMinutes وغيرها.

مشاركة 𝕏 🦋 in