This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:concurrency_intro [2015/03/24 12:53] gthanos [Δημιουργία και εκτέλεση νημάτων] |
java:concurrency_intro [2015/03/24 13:17] gthanos [Επανενεργοποίηση ενός νήματος μέσω της μεθόδου interrupt()] |
||
---|---|---|---|
Line 44: | Line 44: | ||
Παρατηρείστε ότι και τα δύο παραπάνω παραδείγματα καλούν την μέθοδο [[http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#start()|Thread.start()]]. Από τα δύο το πρώτο είναι πιο γενικό, καθώς δεν απαιτείται η κλάση σας να είναι απόγονος της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html|Thread]]. | Παρατηρείστε ότι και τα δύο παραπάνω παραδείγματα καλούν την μέθοδο [[http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#start()|Thread.start()]]. Από τα δύο το πρώτο είναι πιο γενικό, καθώς δεν απαιτείται η κλάση σας να είναι απόγονος της κλάσης [[http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html|Thread]]. | ||
+ | |||
+ | ===== Σταματώντας την εκτέλεση ενός νήματος μέσω της μεθόδου sleep() ===== | ||
+ | |||
+ | Η μέθοδος sleep δίνει την δυνατότητα σε ένα νήμα να σταματήσει την εκτέλεση του για ένα συγκεκριμένο χρονικό διάστημα. Κατά το διάστημα αυτό, άλλες διεργασίες ή threads της υφιστάμενης διεργασίες μπορούν να εκτελεστούν. Η χρονική διάρκεια κατά την οποία θα παύσει η εκτέλεση ενός thread μπορεί να μην είναι ακριβώς η χρονική διάρκεια που επιλέξαμε, καθώς ο χρονοπρογραμματισμός των threads εξαρτάται και από το λειτουργικό σύστημα. Δείτε το παρακάτω παράδειγμα κλήσης της μεθόδου sleep() | ||
+ | |||
+ | <code java SleepMessages.java> | ||
+ | public class SleepMessages { | ||
+ | public static void main(String args[]) | ||
+ | throws InterruptedException { | ||
+ | String importantInfo[] = { | ||
+ | "Mares eat oats", | ||
+ | "Does eat oats", | ||
+ | "Little lambs eat ivy", | ||
+ | "A kid will eat ivy too" | ||
+ | }; | ||
+ | |||
+ | for (int i=0; i<importantInfo.length; i++) { | ||
+ | //Pause for 2 seconds | ||
+ | Thread.sleep(2000); | ||
+ | //Print a message | ||
+ | System.out.println(importantInfo[i]); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== Επανενεργοποίηση ενός νήματος μέσω της μεθόδου interrupt() ===== | ||
+ | |||
+ | Μία διακοπή (interrupt) αποτελεί ένδειξη προς την διεργασία να σταματήσει να κάνει αυτό που κάνει και να εκκινήσει κάτι διαφορετικό ή να τερματίσει. Εάν ένα νήμα έχει καλέσει την sleep(). | ||
+ | |||