java:concurrency_intro

Differences

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

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:concurrency_intro [2015/03/24 12:44]
gthanos created
java:concurrency_intro [2015/03/24 12:53]
gthanos [Δημιουργία και εκτέλεση νημάτων]
Line 12: Line 12:
  
 Η πολυνηματική εκτέλεση αποτελεί βασικό χαρακτηριστικό της πλατφόρμας Java. Κάθε εφαρμογή έχει τουλάχιστον ένα νήμα (ή περισσότερα,​ αν μετρήσουμε και τα νήματα του JVM για κάθε διεργασία). Για τον προγραμματιστή αρχικά υπάρχει μόνο ένα νήμα το οποίο εκτελείται μέσα από τη μέθοδο //main//. Το νήμα αυτό έχει τη δυνατότητα να δημιουργήσει πρόσθετα νήματα,​ όπως θα δείξουμε στη συνέχεια. Η πολυνηματική εκτέλεση αποτελεί βασικό χαρακτηριστικό της πλατφόρμας Java. Κάθε εφαρμογή έχει τουλάχιστον ένα νήμα (ή περισσότερα,​ αν μετρήσουμε και τα νήματα του JVM για κάθε διεργασία). Για τον προγραμματιστή αρχικά υπάρχει μόνο ένα νήμα το οποίο εκτελείται μέσα από τη μέθοδο //main//. Το νήμα αυτό έχει τη δυνατότητα να δημιουργήσει πρόσθετα νήματα,​ όπως θα δείξουμε στη συνέχεια.
 +
 +===== Δημιουργία και εκτέλεση νημάτων =====
 +
 +Υπάρχουν δύο παρεμφερείς τρόποι για την δημιουργία και εκτέλεση ενός νήματος. Και οι δύο παρατίθενται παρακάτω:​
 +
 +<code java HelloRunnable.java>​
 +public class HelloRunnable implements Runnable {
 +
 +    public void run() {
 +        System.out.println("​Hello from a thread!"​);​
 +    }
 +
 +    public static void main(String args[]) {
 +        (new Thread(new HelloRunnable())).start();​
 +    }
 +}
 +</​code>​
 +
 +<code java HelloThread.java>​
 +public class HelloThread extends Thread {
 +
 +    public void run() {
 +        System.out.println("​Hello from a thread!"​);​
 +    }
 +
 +    public static void main(String args[]) {
 +        (new HelloThread()).start();​
 +    }
 +}
 +</​code>​
 +
 +Παρατηρείστε ότι και τα δύο παραπάνω παραδείγματα καλούν την μέθοδο [[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]].
 +
  
java/concurrency_intro.txt · Last modified: 2016/02/26 11:15 (external edit)