User Tools

Site Tools


java:concurrency_intro

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
java:concurrency_intro [2017/03/19 17:47] – [Σταματώντας προσωρινά την εκτέλεση ενός νήματος μέσω της μεθόδου sleep()] gthanosjava:concurrency_intro [2018/03/08 10:37] (current) – [Εφαρμόζοντας τις μεθόδους sleep()/interrupt()/join() σε ένα παράδειγμα] gthanos
Line 49: Line 49:
 <code java SleepMessages.java> <code java SleepMessages.java>
 public class SleepMessages { public class SleepMessages {
-    public static void main(String args[]) +  public static void main(String args[]) 
-        throws InterruptedException { +    throws InterruptedException { 
-        String importantInfo[] = { +    String importantInfo[] = { 
-            "Mares eat oats", +      "Peter Pan",  
-            "Does eat oats", +      "leader of the Lost Boys",  
-            "Little lambs eat ivy", +      "goes to Neverland
-            "A kid will eat ivy too+    };
-        };+
  
-        for (int i=0; i<importantInfo.length; i++) { +    for (int i=0; i<importantInfo.length; i++) { 
-            //Pause for 2 seconds +      //Pause for 2 seconds 
-            Thread.sleep(2000); +      Thread.sleep(2000); 
-            //Print a message +      //Print a message 
-            System.out.println(importantInfo[i]); +      System.out.println(importantInfo[i]);
-        }+
     }     }
 +  }
 } }
 </code> </code>
Line 72: Line 71:
 </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// της μορφής
Line 80: Line 79:
     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;
   }   }
Line 210: Line 209:
 }</code> }</code>
  
- +|Προηγούμενο: [[:java:sockets | Sockets ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:synchronization| Προβλήματα συγχρονισμού με χρήση νημάτων ]]|
- +
- +
- +
java/concurrency_intro.1489945628.txt.gz · Last modified: 2017/03/19 17:47 by gthanos