Διαφορά μεταξύ Runnable και Thread

Πίνακας περιεχομένων:

Διαφορά μεταξύ Runnable και Thread
Διαφορά μεταξύ Runnable και Thread

Βίντεο: Διαφορά μεταξύ Runnable και Thread

Βίντεο: Διαφορά μεταξύ Runnable και Thread
Βίντεο: Πώς να γράψετε πτυχές με το Spring AOP [Ταξίδι Spring AOP - Μέρος 1] 2024, Ιούλιος
Anonim

Βασική διαφορά – Runnable vs Thread

Ένα πρόγραμμα σε εκτέλεση είναι γνωστό ως διεργασία. Η διαδικασία μπορεί να χωριστεί σε πολλαπλές υποδιεργασίες. Για παράδειγμα, το Microsoft Word είναι μια διαδικασία. Ταυτόχρονα ελέγχει για το ορθογραφικό λάθος και τη γραμματική. Αυτό είναι μια υποδιαδικασία. Αυτές οι υποδιεργασίες είναι γνωστές ως νήματα. Το Multithreading είναι η διαδικασία εκτέλεσης πολλαπλών νημάτων ταυτόχρονα. Οι εφαρμογές με νήματα μπορούν να κατασκευαστούν χρησιμοποιώντας διαφορετικές γλώσσες προγραμματισμού. Το Runnable και το Thread σχετίζονται με τον προγραμματισμό Java. Υπάρχουν δύο μέθοδοι στην Java για να δημιουργήσετε ένα νήμα υλοποιώντας μια διεπαφή Runnable ή επεκτείνοντας την κλάση Thread. Κατά την υλοποίηση του Runnable, πολλά νήματα μπορούν να μοιράζονται το ίδιο αντικείμενο νήματος, ενώ στην κλάση Extending Thread, κάθε νήμα έχει ένα μοναδικό αντικείμενο που σχετίζεται με αυτό. Αυτή είναι η βασική διαφορά μεταξύ Runnable και Thread.

Τι είναι το Runnable;

Ένα νήμα περνάει από ορισμένες καταστάσεις. Το «νέο» είναι η αρχή του κύκλου ζωής του νήματος. Αφού η μέθοδος start() καλέσει ένα νέο νήμα, γίνεται τρέξιμο. Εάν ο προγραμματιστής νημάτων επιλέξει το νήμα, μεταβαίνει στην κατάσταση εκτέλεσης. Το νήμα περιμένει την κατάσταση εάν αυτό το νήμα περιμένει ένα άλλο νήμα για να εκτελέσει μια εργασία. Αφού το νήμα ολοκληρώσει την εργασία, μεταβαίνει στην κατάσταση τερματισμού.

Μπορεί να εφαρμοστεί ένα νήμα χρησιμοποιώντας τη διεπαφή Runnable. Ανατρέξτε στο παρακάτω πρόγραμμα.

Διαφορά μεταξύ Runnable και Thread
Διαφορά μεταξύ Runnable και Thread

Εικόνα 01: Πρόγραμμα Java για τη δημιουργία νήματος χρησιμοποιώντας τη διεπαφή Runnable

Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Runnable Demo υλοποιεί τη διεπαφή Runnable. Η μέθοδος run() βρίσκεται μέσα στην κλάση που υλοποιεί τη διεπαφή Runnable. Είναι το σημείο εισόδου για το νήμα. Η λογική είναι στη μέθοδο run(). Στο κύριο πρόγραμμα, δημιουργείται ένα νήμα ορίζοντας ένα αντικείμενο που δημιουργήθηκε από την κλάση Runnable Demo. Είναι t1. Η μέθοδος start() καλείται χρησιμοποιώντας t1.

Ανατρέξτε στο παρακάτω πρόγραμμα.

Διαφορά μεταξύ Runnable και Thread_Figure 02
Διαφορά μεταξύ Runnable και Thread_Figure 02

Εικόνα 02: Πρόγραμμα Java για τη δημιουργία ενός νήματος για την εκτέλεση ενός βρόχου, εφαρμόζοντας τη διεπαφή Runnable

Σύμφωνα με το παραπάνω παράδειγμα, η κλάση Runnable Demo υλοποιεί τη διεπαφή Runnable. Η λογική που πρέπει να εκτελεστεί χρησιμοποιώντας το νήμα είναι γραμμένη στη μέθοδο run(). Στο κύριο πρόγραμμα, δημιουργείται ένα νήμα ορίζοντας ένα αντικείμενο που δημιουργήθηκε από την κλάση Runnable Demo. Είναι t1. Στη συνέχεια, η μέθοδος start() καλείται χρησιμοποιώντας t1.

Τι είναι το νήμα;

Η άλλη μέθοδος δημιουργίας νήματος είναι η επέκταση της κλάσης Thread. Αποτελείται από τρία βήματα. Πρώτα είναι να δηλώσετε την κλάση ως επέκταση της κλάσης Thread. Στη συνέχεια, θα πρέπει να γραφτεί η μέθοδος run(). Έχει την ακολουθία βημάτων που πρέπει να εκτελέσει το νήμα. Τέλος, δημιουργείται το αντικείμενο νήματος και καλείται η μέθοδος start() για να ξεκινήσει την εκτέλεση του νήματος. Ανατρέξτε στο παρακάτω πρόγραμμα.

Διαφορά μεταξύ Runnable και Thread_Figure 03
Διαφορά μεταξύ Runnable και Thread_Figure 03

Εικόνα 03: Πρόγραμμα Java που επεκτείνει την κλάση νήματος

Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση MyThread επεκτείνει την κλάση Thread. Αντικαθιστά τη μέθοδο εκτέλεσης. Η μέθοδος run() περιέχει τη λογική που πρέπει να εκτελεστεί από το νήμα. Είναι το σημείο εισόδου στο νήμα. Στη συνέχεια δημιουργείται το αντικείμενο νήματος. Είναι το νήμα 1. Το νήμα ξεκινά χρησιμοποιώντας τη μέθοδο start(). Θα εκτελέσει μια κλήση στη μέθοδο run().

Ένα παράδειγμα προγράμματος δύο κλάσεων που επεκτείνουν την κλάση Thread είναι το εξής.

Βασική διαφορά μεταξύ Runnable και Thread
Βασική διαφορά μεταξύ Runnable και Thread

Εικόνα 04: Πρόγραμμα Java με δύο κλάσεις που επεκτείνουν την κλάση Thread

Σύμφωνα με το παραπάνω πρόγραμμα, και οι δύο κλάσεις Α και Β επεκτείνουν την κλάση Thread. Και οι δύο κλάσεις έχουν την εφαρμογή της μεθόδου run(). Το κύριο νήμα είναι αυτό που εκτελεί τη μέθοδο main(). Πριν πεθάνει το κύριο νήμα, δημιουργεί και ξεκινά το νήμα1 και το νήμα2. Μέχρι να φτάσει το κύριο νήμα στο τέλος της κύριας μεθόδου, τρία νήματα εκτελούνται παράλληλα. Δεν υπάρχει συγκεκριμένη σειρά με την οποία τα νήματα δίνουν έξοδο. Μόλις ξεκινήσει το νήμα, είναι δύσκολο να αποφασίσουμε τη σειρά που θα εκτελέσουν. Τρέχουν ανεξάρτητα.

Ποιες είναι οι ομοιότητες μεταξύ Runnable και Thread;

Και τα δύο χρησιμοποιούν για να δημιουργήσουν ένα νήμα στην Java

Ποια είναι η διαφορά μεταξύ Runnable και Thread;

Runnable vs Thread

Το Runnable είναι μια διεπαφή σε Java για τη δημιουργία ενός νήματος που επιτρέπει σε πολλά νήματα να μοιράζονται το ίδιο αντικείμενο νήματος. Το νήμα είναι μια κλάση στη Java για τη δημιουργία ενός νήματος όπου κάθε νήμα έχει ένα μοναδικό αντικείμενο που σχετίζεται με αυτό.
Μνήμη
Στο Runnable, πολλά νήματα μοιράζονται το ίδιο αντικείμενο, επομένως απαιτούν λιγότερη μνήμη. Στην κλάση Thread, κάθε νήμα δημιουργεί ένα μοναδικό αντικείμενο, επομένως απαιτεί περισσότερη μνήμη.
Δυνατότητα επέκτασης
Μετά την υλοποίηση της διεπαφής Runnable, μπορεί να επεκτείνει μια κλάση. Πολλαπλές κληρονομιές δεν υποστηρίζονται στην Java. Μετά την επέκταση της κλάσης Thread, δεν μπορεί να επεκτείνει καμία άλλη κλάση.
Συντηρησιμότητα κωδικού
Η διεπαφή με δυνατότητα εκτέλεσης κάνει τον κώδικα πιο διατηρήσιμο. Στην τάξη Thread, η διατήρηση είναι χρονοβόρα.

Σύνοψη – Runnable vs Thread

Μια διαδικασία χωρίζεται σε πολλαπλές υποδιεργασίες για την εκτέλεση πολλαπλών εργασιών ταυτόχρονα. Αυτές οι υποδιεργασίες είναι γνωστές ως νήματα. Η δημιουργία ενός νήματος μπορεί να γίνει με την υλοποίηση της διεπαφής Runnable ή με την επέκταση της κλάσης νήματος. Είναι εύκολο να επεκταθεί η κλάση Thread, αλλά δεν είναι καλύτερη πρακτική Αντικειμενοστρεφούς Προγραμματισμού. Κατά την υλοποίηση του Runnable, πολλά νήματα μπορούν να μοιράζονται το ίδιο αντικείμενο νήματος, ενώ στην κλάση επέκτασης Thread κάθε νήμα έχει ένα μοναδικό αντικείμενο που σχετίζεται με αυτό. Αυτή είναι η διαφορά μεταξύ Runnable και Thread. Στην κλάση Thread η δημιουργία πολλαπλών αντικειμένων μπορεί να καταναλώσει περισσότερη μνήμη.

Λήψη του PDF του Runnable vs Thread

Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κάντε λήψη της έκδοσης PDF εδώ Διαφορά μεταξύ Runnable και Thread

Συνιστάται: