This shows you the differences between two versions of the page.
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]]. | ||
+ | |||