ההבדל בין ניתנים להרצה ל-Thread

תוכן עניינים:

ההבדל בין ניתנים להרצה ל-Thread
ההבדל בין ניתנים להרצה ל-Thread

וִידֵאוֹ: ההבדל בין ניתנים להרצה ל-Thread

וִידֵאוֹ: ההבדל בין ניתנים להרצה ל-Thread
וִידֵאוֹ: מולקולות רואות את האור - אינטראקציה בין מולקולות לבין אור 2024, יולי
Anonim

הבדל מפתח – ניתן להרצה לעומת שרשור

תוכנית בביצוע ידועה כתהליך. ניתן לחלק את התהליך למספר תהליכי משנה. לדוגמה, Microsoft Word הוא תהליך. במקביל, הוא בודק את שגיאת הכתיב והדקדוק. זה תת-תהליך. תת-תהליכים אלו ידועים בתור פתילים. ריבוי שרשורים הוא תהליך של ביצוע שרשורים מרובים בו זמנית. ניתן לבנות יישומים עם שרשור באמצעות שפות תכנות שונות. Runnable ו-Thread משויכים לתכנות Java. ישנן שתי שיטות ב-Java ליצירת שרשור על ידי הטמעת ממשק הרצה או הרחבת המחלקה Thread.בעת הטמעת Runnable, שרשורים רבים יכולים לשתף את אותו אובייקט שרשור בעוד במחלקת Extending Thread, לכל שרשור יש אובייקט ייחודי המשויך אליו. זה ההבדל העיקרי בין Runnable ל-Thread.

מה זה ניתן להרצה?

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

ניתן ליישם שרשור באמצעות ממשק Runnable. עיין בתוכנית שלהלן.

ההבדל בין ריצה לחוט
ההבדל בין ריצה לחוט

איור 01: תוכנית Java ליצירת שרשור באמצעות ממשק ההפעלה

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

עיין בתוכנית שלהלן.

ההבדל בין Runnable ל-Thread_Figure 02
ההבדל בין Runnable ל-Thread_Figure 02

איור 02: תוכנית Java ליצירת שרשור לביצוע לולאה, על ידי יישום ממשק ההפעלה

לפי הדוגמה לעיל, הכיתה Runnable Demo מיישמת ממשק Runnable. ההיגיון לביצוע באמצעות השרשור נכתב בשיטת run(). בתוכנית הראשית נוצר שרשור על ידי הגדרת אובייקט שהופק ממחלקה Runnable Demo.זה t1. לאחר מכן, שיטת start() נקראת באמצעות t1.

מה זה שרשור?

השיטה האחרת ליצירת שרשור היא על ידי הרחבת המחלקה Thread. זה מורכב משלושה שלבים. ראשית, להכריז על המחלקה כמרחיבה את מחלקת ה-Thread. לאחר מכן, יש לכתוב את שיטת run(). יש לו את רצף השלבים שהשרשור צריך לבצע. לבסוף, אובייקט ה-thread נוצר, ומתודה start() נקראת כדי ליזום את ביצוע ה-thread. עיין בתוכנית שלהלן.

ההבדל בין Runnable ל-Thread_Figure 03
ההבדל בין Runnable ל-Thread_Figure 03

איור 03: תוכנית Java שמרחיבה את שיעור ה-Thread

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

תוכנית לדוגמה של שני שיעורים המרחיבים את שיעור ה-Thread היא כדלקמן.

ההבדל העיקרי בין ריצה לחוט
ההבדל העיקרי בין ריצה לחוט

איור 04: תוכנית Java עם שתי מחלקות שמרחיבות את מחלקת ה-Thread

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

מה הם קווי הדמיון בין ניתנים להרצה ל-Thread?

שניהם משתמשים כדי ליצור שרשור ב-Java

מה ההבדל בין ריצה לשרשור?

Runnable vs Thread

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

סיכום – ניתן להרצה לעומת שרשור

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

הורד את ה-PDF של Runnable vs Thread

ניתן להוריד את גרסת ה-PDF של מאמר זה ולהשתמש בה למטרות לא מקוונות לפי הערת ציטוט. אנא הורד את גרסת ה-PDF כאן ההבדל בין ריצה ל-Thread

מוּמלָץ: