Thread.sleep() ב-Java – יתרומם של תהליך ב-Java

הקדמה

שיטת Thread.sleep() ב-Java ניתן להשתמש בה כדי לעצור את ביצוע החוט הנוכחי לזמן מסוים במילישניות. ערך הפרמטר עבור המילישניות לא יכול להיות שלילי. אחרת, היא זורקת IllegalArgumentException.

sleep(long millis, int nanos) היא שיטה נוספת שניתן להשתמש בה כדי לעצור את ביצוע החוט הנוכחי לזמן מסוים במילישניות וננושניות. הערכים הנינושניים המותרים הם בין 0 ל- 999999.

במאמר זה, תלמד על Thread.sleep() של Java.

איך Thread.sleep עובד

Thread.sleep() מתקשרת עם מתזמן החוט כדי להעביר את החוט הנוכחי למצב המתנה לזמן מסוים. לאחר שהזמן המתנה נגמר, מצב החוט משתנה למצב מוכן וממתין למעבר יחידה המעבירה את הביצוע הנוסף. הזמן המדויק שבו החוט הנוכחי ישן תלוי במתזמן החוט הכללי הכלול במערכת ההפעלה.

נקודות חשובות על Thread.sleep ב-Java

  1. תמיד משהה את ביצוע תהליך החוט הנוכחי.
  2. הזמן האמיתי שבו החוט נמצא בשינה לפני שהוא מתעורר ומתחיל בביצוע תלוי בטיימרים ומתזמנים של המערכת. עבור מערכת שקטה, הזמן האמיתי לשינה קרוב לזמן השינה המסוים, אך עבור מערכת תפוסה, הוא יהיה קצת יותר ארוך.
  3. Thread.sleep() לא מאבד נעילות או נעיל את החוט הנוכחי שרכש אותם.
  4. כל חוט אחר יכול להפריע לחוט הנוכחי במהלך השינה, ובמקרים כאלה יושלך InterruptedException.

דוגמה לשימוש ב-Thread.sleep ב-Java

כאן דוגמה לתוכנית בה משמשת Thread.sleep() כדי לעצור את ביצוע החוט הראשי למשך 2 שניות (2000 מילישניות):

ThreadSleep.java
package com.journaldev.threads;

public class ThreadSleep {

    public static void main(String[] args) throws InterruptedException {
        long start = System.currentTimeMillis();

        Thread.sleep(2000);

        System.out.println("Sleep time in ms = " + (System.currentTimeMillis() - start));
    }
}

בתחילה, הקוד הזה שומר את הזמן הנוכחי של המערכת במילישניות. לאחר מכן, הוא מתעצם למשך 2000 מילישניות. לבסוף, הקוד מדפיס את הזמן הנוכחי החדש פחות הזמן המערכת הקודם:

Output
Sleep time in ms = 2005

שימו לב שההבדל הזה אינו בדיוק 2000 מילישניות. זה בגלל איך Thread.sleep() פועל ואימפלימנטציה הספציפית של מתזמן החוט במערכת ההפעלה.

מסקנה

במאמר זה, למדת על Thread.sleep() של Java.

המשך את למידתך עם עוד מדריכי Java.

Source:
https://www.digitalocean.com/community/tutorials/thread-sleep-java