This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
java:concurrency_intro [2015/03/24 13:19] gthanos [Σταματώντας την εκτέλεση ενός νήματος μέσω της μεθόδου sleep()] |
java:concurrency_intro [2015/03/24 13:24] gthanos [Επανενεργοποίηση ενός νήματος μέσω της μεθόδου interrupt()] |
||
---|---|---|---|
Line 76: | Line 76: | ||
===== Επανενεργοποίηση ενός νήματος μέσω της μεθόδου interrupt() ===== | ===== Επανενεργοποίηση ενός νήματος μέσω της μεθόδου interrupt() ===== | ||
- | Μία διακοπή (interrupt) αποτελεί ένδειξη προς την διεργασία να σταματήσει να κάνει αυτό που κάνει και να εκκινήσει κάτι διαφορετικό ή να τερματίσει. Εάν ένα νήμα έχει καλέσει την sleep(). | + | Μία διακοπή (interrupt) αποτελεί ένδειξη προς την διεργασία να σταματήσει να κάνει αυτό που κάνει και να εκκινήσει κάτι διαφορετικό ή να τερματίσει. Η java υποστηρίζει την μέθοδο [[http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#interrupt()|Thread.interrupt()]] για την αποστολή ενός σήματος διακοπής σε ένα νήμα. Εάν ένα νήμα έχει καλέσει την sleep() η κλήση της interrupt() για το νήμα αυτό, θα το αφυπνίσει και θα παραχθεί ένα [[http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html|InterruptedException]] για το νήμα που κοιμόταν. Για τον λόγο αυτό, η κλήση της sleep() θα πρέπει να γίνεται πάντα μέσα σε ένα try/catch block της μορφής |
+ | |||
+ | <code java> | ||
+ | try { | ||
+ | Thread.sleep(4000); | ||
+ | } catch (InterruptedException e) { | ||
+ | System.out.println(("We've been interrupted: no more messages."); | ||
+ | return; | ||
+ | } | ||
+ | </code> | ||
+ | |||