Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision |
java:concurrency_intro [2017/03/19 17:55] – [Αναβάλλοντας την εκτέλεση ενός νήματος μέσω της μεθόδου sleep()] gthanos | java:concurrency_intro [2018/03/08 10:37] (current) – [Εφαρμόζοντας τις μεθόδους sleep()/interrupt()/join() σε ένα παράδειγμα] gthanos |
---|
</WRAP> | </WRAP> |
| |
===== Επανενεργοποίηση ενός νήματος μέσω της μεθόδου interrupt() ===== | ===== Αφύπνιση ενός νήματος μέσω της μεθόδου interrupt() ===== |
| |
Μία διακοπή (//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|java.lang.InterruptedException]] για το νήμα που κοιμόταν. Για τον λόγο αυτό, η κλήση της //sleep// θα πρέπει να γίνεται πάντα μέσα σε ένα //try/catch block// της μορφής | Μία διακοπή (//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|java.lang.InterruptedException]] για το νήμα που κοιμόταν. Για τον λόγο αυτό, η κλήση της //sleep// θα πρέπει να γίνεται πάντα μέσα σε ένα //try/catch block// της μορφής |
Thread.sleep(4000); | Thread.sleep(4000); |
} catch (InterruptedException e) { | } catch (InterruptedException e) { |
System.out.println(("We've been interrupted: no more messages."); | System.out.println("We've been interrupted: no more messages."); |
return; | return; |
} | } |
}</code> | }</code> |
| |
| |Προηγούμενο: [[:java:sockets | Sockets ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:synchronization| Προβλήματα συγχρονισμού με χρήση νημάτων ]]| |
| |
| |
| |