logo

Thread.sleep() ב-Java עם דוגמאות

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

תחביר שיטת sleep():

להלן התחביר של שיטת sleep() .

 public static void sleep(long mls) throws InterruptedException public static void sleep(long mls, int n) throws InterruptedException 

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

ניתן להשתמש בשיטת Thread.sleep() עם כל שרשור. זה אומר שכל שרשור אחר או השרשור הראשי יכולים להפעיל את שיטת sleep() .

פרמטרים:

להלן הפרמטרים המשמשים בשיטת sleep() .

mls: הזמן באלפיות שניות מיוצג על ידי הפרמטר mls. משך הזמן שבו החוט יישן ניתן על ידי השיטה sleep().

n: זה מראה את הזמן הנוסף עד אליו המתכנת או המפתח רוצים שהשרשור יהיה במצב שינה. הטווח של n הוא מ-0 עד 999999.

השיטה לא מחזירה כלום.

מה גודל המסך שלי

נקודות חשובות לזכור לגבי שיטת Sleep()

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

בכל פעם שרשור אחר עושה הפרעה בזמן שהשרשור הנוכחי כבר במצב שינה, אז ה-InterruptedException נזרק.

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

דוגמה לשיטת sleep() ב-Java : בשרשור המותאם אישית

הדוגמה הבאה מראה כיצד ניתן להשתמש בשיטת sleep() בשרשור המותאם אישית.

שם קובץ: TestSleepMethod1.java

 class TestSleepMethod1 extends Thread{ public void run(){ for(int i=1;i<5;i++){ 500 the thread will sleep for milli seconds try{thread.sleep(500);}catch(interruptedexception e){system.out.println(e);} system.out.println(i); } public static void main(string args[]){ testsleepmethod1 t1="new" testsleepmethod1(); t2="new" t1.start(); t2.start(); < pre> <p> <strong>Output:</strong> </p> <pre> 1 1 2 2 3 3 4 4 </pre> <p>As you know well that at a time only one thread is executed. If you sleep a thread for the specified time, the thread scheduler picks up another thread and so on.</p> <h3>Example of the sleep() Method in Java : on the main thread</h3> <p> <strong>FileName:</strong> TestSleepMethod2.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod2 { // main method public static void main(String argvs[]) { try { for (int j = 0; j <5; 1 1000 j++) { the main thread sleeps for milliseconds, which is sec whenever loop runs thread.sleep(1000); displaying value of variable system.out.println(j); } catch (exception expn) catching exception system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 </pre> <h3>Example of the sleep() Method in Java: When the sleeping time is -ive</h3> <p>The following example throws the exception IllegalArguementException when the time for sleeping is negative.</p> <p> <strong>FileName:</strong> TestSleepMethod3.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable's value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;></pre></5;></pre></5;i++){>

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

דוגמה לשיטת sleep() ב-Java : בשרשור הראשי

שם קובץ: TestSleepMethod2.java

 // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod2 { // main method public static void main(String argvs[]) { try { for (int j = 0; j <5; 1 1000 j++) { the main thread sleeps for milliseconds, which is sec whenever loop runs thread.sleep(1000); displaying value of variable system.out.println(j); } catch (exception expn) catching exception system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> 0 1 2 3 4 </pre> <h3>Example of the sleep() Method in Java: When the sleeping time is -ive</h3> <p>The following example throws the exception IllegalArguementException when the time for sleeping is negative.</p> <p> <strong>FileName:</strong> TestSleepMethod3.java</p> <pre> // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable\'s value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;></pre></5;>

דוגמה לשיטת sleep() ב-Java: כאשר זמן השינה הוא -ive

הדוגמה הבאה זורקת את החריג IllegalArguementException כאשר זמן השינה שלילי.

שם קובץ: TestSleepMethod3.java

 // important import statements import java.lang.Thread; import java.io.*; public class TestSleepMethod3 { // main method public static void main(String argvs[]) { // we can also use throws keyword followed by // exception name for throwing the exception try { for (int j = 0; j <5; j++) { it throws the exception illegalargumentexception as time is -ive which -100 thread.sleep(-100); displaying variable\'s value system.out.println(j); } catch (exception expn) iscaught here system.out.println(expn); < pre> <p> <strong>Output:</strong> </p> <pre> java.lang.IllegalArgumentException: timeout value is negative </pre> <hr></5;>