thread sleep thread sleep method java with examples
Σε αυτό το σεμινάριο, θα συζητήσουμε τη μέθοδο Sleep Thread () στην Java. Θα δούμε πώς λειτουργεί η μέθοδος Thread.Sleep () με τη βοήθεια των Παραδειγμάτων:
ο java.lang.Thread.sleep (μακριά χιλιοστά) Η μέθοδος είναι η μέθοδος που παρέχεται από την κλάση νημάτων που θέτει το νήμα που βρίσκεται σε λειτουργία σε αναστολή λειτουργίας. Θα καθορίσουμε τον χρόνο ύπνου ως επιχείρημα της μεθόδου ύπνου.
=> Ρίξτε μια ματιά στον Οδηγό για αρχάριους Java εδώ.
Τι θα μάθετε:
Thread Sleep () Μέθοδος στην Java
Η κλάση Thread της Java παρέχει δύο παραλλαγές της μεθόδου ύπνου.
Το πρωτότυπο και των δύο παραλλαγών της μεθόδου ύπνου () περιγράφεται παρακάτω.
# 1) Παραλλαγή μεθόδου ύπνου # 1
Πρωτότυπο: δημόσιος στατικός κενός ύπνος (μακρά χιλιοστά) ρίχνει το InterruptException
Παράμετροι: millis => η διάρκεια του χρόνου σε χιλιοστά του δευτερολέπτου για την οποία κοιμάται το νήμα.
Αξία επιστροφής: κενός
Ρίχνει:
- IllegalArgumentException => εάν το millis είναι αρνητικό
- InterruptException => εάν κάποιο άλλο νήμα διακόπτει το τρέχον νήμα. Όταν παρουσιαστεί αυτή η εξαίρεση, η κατάσταση διακοπής του νήματος διαγράφεται.
Περιγραφή: Αυτή η παραλλαγή της μεθόδου αναστολής καθιστά το τρέχον νήμα σε αναστολή λειτουργίας ή διακόπτει προσωρινά την εκτέλεσή του για τον δεδομένο αριθμό χιλιοστών του δευτερολέπτου (παρέχεται στο όρισμα μεθόδου). Ωστόσο, ενώ κοιμάστε, το νήμα δεν χάνει την οθόνη ή δεν κλειδώνει την ιδιοκτησία.
# 2) Παραλλαγή μεθόδου ύπνου # 2
Πρωτότυπο: δημόσιος στατικός κενός ύπνος (μεγάλα χιλιοστά, int nanos) ρίχνει το InterruptdException
Παράμετροι:
ερωτήσεις και απαντήσεις συνέντευξης μηχανικού διασφάλισης ποιότητας
- χιλιοστά => τη διάρκεια σε χιλιοστά του δευτερολέπτου για την οποία πρέπει να κοιμηθεί το νήμα.
- νανο => επιπλέον νανοδευτερόλεπτα για τα οποία μπορεί να κοιμηθεί το νήμα. Το εύρος είναι 0 - 999999.
Τιμή επιστροφής: κενός
Ρίχνει:
- IllegalArgumentException => εάν η τιμή millis είναι αρνητική ή η τιμή nanos εάν είναι εκτός εμβέλειας.
- InterruptException => εάν κάποιο άλλο νήμα διακόπτει το τρέχον νήμα. Η κατάσταση διακοπής του νήματος διαγράφεται όταν παρουσιαστεί αυτή η εξαίρεση.
Περιγραφή: Αυτή η παραλλαγή της μεθόδου ύπνου αναγκάζει το νήμα να το καλέσει σε αναστολή λειτουργίας ή να σταματήσει προσωρινά την εκτέλεση του για τον δεδομένο αριθμό χιλιοστών του δευτερολέπτου. (πρώτο όρισμα σε μια κλήση μεθόδου). Εκτός αυτού, παρείχε επίσης τον αριθμό των νανοδευτερολέπτων (δεύτερο επιχείρημα σε μια μέθοδο κλήσης) για ύπνο.
Σημειώστε ότι η ακρίβεια και η ακρίβεια του καθορισμένου χρόνου εξαρτάται από τους χρονοδιακόπτες συστήματος και τους προγραμματιστές. Όταν το νήμα κοιμάται, η ιδιοκτησία της κλειδαριάς ή της οθόνης δεν αλλάζει.
Εργασία του νήματος. Μέθοδος ύπνου
Κάθε φορά που ένα νήμα κοιμάται ή αναστέλλεται, γίνεται από τον προγραμματιστή. Η μέθοδος Thread.sleep () επικοινωνεί με τον προγραμματιστή νημάτων, έτσι ώστε ο προγραμματιστής να μπορεί να προκαλέσει την αλλαγή του τρέχοντος νήματος για να περιμένει την κατάσταση για μια δεδομένη διάρκεια.
Μόλις τελειώσει αυτός ο καθορισμένος χρόνος, η κατάσταση του νήματος αλλάζει σε «runnable», ώστε να μπορεί να περιμένει την CPU να συνεχίσει την εκτέλεση.
Έτσι, η διάρκεια για το πόσο κοιμάται το νήμα εξαρτάται από τον προγραμματιστή και όχι από τη μέθοδο. Καθώς ο προγραμματιστής είναι μέρος του λειτουργικού συστήματος, η αρχιτεκτονική του OS παίζει επίσης ρόλο στις αλλαγές κατάστασης του νήματος.
Τώρα που έχουμε δει λεπτομερώς τη μέθοδο Thread.sleep (), θα πρέπει να έχουμε κατά νου ορισμένα σημεία κατά τη χρήση αυτής της μεθόδου.
Οι δείκτες περιλαμβάνουν:
# 1) Η μέθοδος Thread.sleep () διακόπτει πάντα την εκτέλεση του τρέχοντος νήματος.
#δύο) Η πραγματική διάρκεια για την οποία κοιμάται το νήμα εξαρτάται από τους προγραμματιστές και τους χρονοδιακόπτες συστήματος.
Για παράδειγμα, για ένα πολύ απασχολημένο σύστημα, ο χρόνος ύπνου του νήματος μπορεί να είναι μεγαλύτερος από τον καθορισμένο, ενώ, για το σύστημα που δεν είναι τόσο απασχολημένο, μπορεί να είναι λίγο πολύ κοντά σε μια καθορισμένη ώρα.
# 3) Ενώ το νήμα κοιμάται, δεν χάνει κλειδαριές ή οθόνες που είχε αποκτήσει πριν κοιμηθεί.
# 4) Το τρέχον νήμα που βρίσκεται σε κατάσταση αναστολής μπορεί να διακοπεί από οποιοδήποτε άλλο νήμα. Σε αυτήν την περίπτωση, το 'InterruptException' εμφανίζεται.
Thread.sleep Παράδειγμα στην Ιάβα
Ας προχωρήσουμε τώρα σε ένα παράδειγμα που δείχνει τη μέθοδο ύπνου. Εδώ, έχουμε μια κλάση νήματος που έχει μια μέθοδο εκτέλεσης (). Στη μέθοδο run () ονομάζουμε 'Thread.sleep (1000)'. Στη συνέχεια, στην κύρια λειτουργία, δημιουργούμε δύο παρουσίες αυτού του νήματος, δηλαδή δύο νήματα. Στη συνέχεια ξεκινάμε τα νήματα.
Στην έξοδο, παρατηρούμε ότι καθώς και τα δύο νήματα εκτελούνται, τα νήματα είναι προγραμματισμένα το ένα μετά το άλλο, δηλαδή όταν το ένα κοιμάται το άλλο τρέχει.
Παράδειγμα:
class SleepThread extends Thread { //run method for thread public void run() { for(int i=1;i<5;i++) { try { //call sleep method of thread Thread.sleep(1000); }catch(InterruptedException e){System.out.println(e);} //print current thread instance with loop variable System.out.println(Thread.currentThread().getName() + ' : ' + i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread thread_1 = new SleepThread(); SleepThread thread_2 = new SleepThread(); //start threads one by one thread_1.start(); thread_2.start(); } }
Παραγωγή:
Όταν παρατηρούμε την έξοδο, διαπιστώνουμε ότι το Thread_0 και το Thread_1 στρέφονται προς εκτέλεση.
Thread.sleep () με αρνητική τιμή ύπνου
Στη συνέχεια, ας δείξουμε ένα άλλο παράδειγμα της μεθόδου Thread.sleep (). Εδώ εξετάσαμε μια ειδική περίπτωση αρνητικής τιμής ύπνου. Το πρόγραμμα είναι παρόμοιο με το παραπάνω πρόγραμμα αλλά ο χρόνος ύπνου που παρέχεται είναι -500.
ιστοσελίδες για να παρακολουθείτε anime αγγλικά
Παράδειγμα:
class SleepThread extends Thread { public void run() { for(int i=1;i<5;i++) { try { //call sleep method with negative value of time Thread.sleep(-500); }catch(InterruptedException e){System.out.println(e);} System.out.println(i); } } } class Main{ public static void main(String args()) { //create two thread instances SleepThread t1=new SleepThread(); SleepThread t2=new SleepThread(); //start the threads one by one t1.start(); t2.start(); } }
Παραγωγή:
Από την έξοδο, μπορούμε να δούμε ότι η μέθοδος έχει ρίξει το 'IllegalArgumentException' καθώς η αρνητική τιμή του χρόνου ύπνου δεν είναι αποδεκτή.
Συχνές Ερωτήσεις
Ε # 1) Πώς λειτουργεί το νήμα νήματος στην Java;
Απάντηση: Όταν το ύπνο () καλείται στο νήμα με καθορισμένο χρονικό διάστημα σε χιλιοστά του δευτερολέπτου, το νήμα σταματά την εκτέλεση του. Παραιτείται από τη CPU. Έτσι, κατά τη διάρκεια της διάρκειας κατά την οποία το νήμα κοιμάται, τα άλλα νήματα μπορούν να χρησιμοποιούν την CPU.
Q # 2) Τι είναι η απόδοση () και ο ύπνος () στο νήμα Java;
Απάντηση: Η μέθοδος sleep () του νήματος αναγκάζει το νήμα να παραιτηθεί από την CPU και να σταματήσει την εκτέλεση. Ενώ αυτό το νήμα κοιμάται, τα άλλα νήματα αποκτούν CPU. Αυτό γίνεται από τον προγραμματιστή.
Η μέθοδος απόδοσης () προκαλεί επίσης το νήμα να εγκαταλείψει τον έλεγχο της CPU όταν καλείται, αλλά η μέθοδος ύπνου () εμφανίζει πιο καθορισμένη συμπεριφορά σε σύγκριση με την απόδοση ().
Q # 3) Πώς εμποδίζετε ένα νήμα Java να μην κοιμηθεί;
Απάντηση: Σταματάμε το νήμα Java να κοιμάται χρησιμοποιώντας τη μέθοδο διακοπής (). Κάθε νήμα που περιμένει ή κοιμάται μπορεί να διακοπεί με την επίκληση της μεθόδου διακοπής () της κλάσης νήματος.
Q # 4) Μπορούμε να σκοτώσουμε ένα νήμα στην Java;
Απάντηση: Όχι, το νήμα δεν σκοτώνεται στην Java. Αντ 'αυτού, το νήμα σταματά στην Java. Το νήμα τερματίζεται και μετά μπορεί να κλείσει με χαρά. Συχνά χρησιμοποιούμε ένα πτητικό boolean πεδίο που ελέγχεται περιοδικά για τυχόν αλλαγές στις τιμές, ώστε να μπορούμε να τερματίσουμε το νήμα.
Q # 5) Γιατί ο ύπνος () είναι μια στατική μέθοδος;
Απάντηση: Όταν καλείτε τη μέθοδο sleep () για να θέσετε το νήμα σε αναστολή λειτουργίας, το ονομάζουμε πάντα χρησιμοποιώντας την κλάση Thread.
Γιατί είναι απαραίτητο να εκτελέσετε ένα πρόγραμμα χρησιμοποιώντας δεδομένα δοκιμής για εισαγωγή;
Για παράδειγμα , Thread.sleep (1000);
Η παραπάνω κλήση λειτουργεί στο τρέχον νήμα και θέτει το τρέχον νήμα σε αναστολή λειτουργίας. Δεν καλούμε ποτέ τη μέθοδο χρησιμοποιώντας μια συγκεκριμένη παρουσία νήματος. Έτσι η μέθοδος είναι στατική.
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε συζητήσει τη μέθοδο sleep () των νημάτων στην Java. Η μέθοδος Sleep () αναγκάζει το τρέχον νήμα που εκτελεί να σταματήσει την εκτέλεση για ένα καθορισμένο χρονικό διάστημα που παρέχεται ως επιχείρημα στη μέθοδο αναστολής.
Ο προγραμματιστής συστήματος λειτουργεί με τη μέθοδο αναστολής λειτουργίας για να θέσει το τρέχον νήμα σε κατάσταση αναμονής. Ενώ το νήμα κοιμάται, συνεχίζει να διαθέτει τις κλειδαριές ή τις οθόνες που έχει αποκτήσει. Όταν περνάμε μια αρνητική τιμή του χρόνου ύπνου στη μέθοδο ύπνου, ρίχνει το «IllegalArgumentException».
Όταν μεταβιβάζουμε μια έγκυρη τιμή χρόνου ύπνου στη μέθοδο αναστολής λειτουργίας (), τα άλλα νήματα θα εκτελέσουν τη σειρά κατά την αναστολή λειτουργίας του τρέχοντος νήματος.
=> Δείτε εδώ για να δείτε εδώ το A-Z Of Java Training Tutorials.
Συνιστώμενη ανάγνωση
- Multithreading In Java - Εκμάθηση με παραδείγματα
- Multithreading σε C ++ με παραδείγματα
- Java Synchronized: Τι είναι ο συγχρονισμός νημάτων στην Java
- Νήματα Java με μεθόδους και κύκλο ζωής
- Εκμάθηση συμβολοσειράς Java | Μέθοδοι συμβολοσειράς Java με παραδείγματα
- Πώς να χρησιμοποιήσετε τη μέθοδο Java toString;
- TreeMap In Java - Tutorial With Java TreeMap Παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java