Ειδικά Θέματα Προγραμματισμού

Σχετικά έγγραφα
Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού

Το παρακάτω πρόγραμμα ορίζει δυο κλάσεις την SimpleThread και την TwoThreadsTest:

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ειδικά Θέματα Προγραμματισμού

Διαδικτυακές Εφαρμογές Ενότητα 4: Streams

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 6: Φιλικές συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ειδικά Θέματα Προγραμματισμού

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός Διαδικτύου

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Διαδικτύου

Ειδικά Θέματα Προγραμματισμού

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Οντοκεντρικός Προγραμματισμός

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Διαδικτύου

Οντοκεντρικός Προγραμματισμός

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 8: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

ΜΑΘΗΜΑ: Μεταγλωττιστές

Προγραμματισμός Διαδικτύου

Προγραμματισμός Διαδικτύου

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Προγραμματισμός Διαδικτύου

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

Διδακτική της Πληροφορικής

Αντικειμενοστραφής Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΜΑΘΗΜΑ: Δίκτυα Υψηλών Ταχυτήτων

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΜΑΘΗΜΑ: ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Προγραμματισμός Διαδικτύου

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

14η ιάλεξη. Προχωρημένα θέματα σχεδίασης

Δομημένος Προγραμματισμός

Διαδικαστικός Προγραμματισμός

Οργανωσιακή Συμπεριφορά Ενότητα 1: Η έννοια της οργάνωσης και διοίκησης

Προγραμματισμός Διαδικτύου

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΜΑΘΗΜΑ: Υπολογιστικά Νέφη

2.1 Αντικειµενοστρεφής προγραµµατισµός

Υπολογιστικά Συστήματα

Μεταγλωττιστές. Ενότητα 3: Τυπικές γλώσσες (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Αντικειμενοστραφής Προγραμματισμός

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Οντοκεντρικός Προγραμματισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εκκλησιαστικό Δίκαιο

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Κατανεμημένα Συστήματα

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στον Προγραμματισμό με C++

Αντικειμενοστρεφής Προγραμματισμός

Αντικειµενοστραφής Προγραµµατισµός

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΜΑΘΗΜΑ: Ασύρματες Κινητές Επικοινωνίες

Κλάσεις. Κατηγορίες Αντικειµένων. Κλάσεις. Φυσικά Αντικείµενα. Χώρος = Οµάδα Φυσικών Αντικειµένων. Πρόγραµµα = Οµάδα

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Λειτουργικά Συστήματα

ΜΑΘΗΜΑ: Ηλεκτρονικά Ισχύος

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Υπολογιστικά Συστήματα

Μεταγλωττιστές. Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Αντικειμενοστραφής Προγραμματισμός

Σχεδίαση Δικτύων Υπολογιστών

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 8: Πακέτα (Packages)

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ηλεκτρονικοί Υπολογιστές

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Transcript:

Ειδικά Θέματα Προγραμματισμού Ενότητα 6: Threads Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Threads

Σκοποί ενότητας Σε αυτή την παρουσίαση θα ασχοληθούμε με τα νήματα (Threads). Λόγω του γεγονότος ότι το μάθημα απευθύνεται άτομα με κάποια εμπειρία στον προγραμματισμό, κάποια θέματα του βιβλίου θεωρούνται γνωστά κι έχουν παραληφθεί στην παρουσίαση. 5

Περιεχόμενα ενότητας (1/2) Threads. Υλοποίηση των Threads (α Τρόπος). Υλοποίηση Threads σε υποκλάσεις. Υλοποίηση Threads σε υποκλάσεις (2 ος τρόπος). 6

Περιεχόμενα ενότητας (2/2) Υλοποίηση των Threads (β Τρόπος). Σύνοψη. Συγχρονισμός Threads. 7

Threads (1/2) Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά την άλλη μέχρι το τέλος του. Σ αυτή την περίπτωση μπορούμε να πούμε ότι το συγκεκριμένο process διαθέτει μόνο ένα thread που εκτελεί τις εντολές του προγράμματος. 8

Threads (2/2) Στις multithreading γλώσσες προγραμματισμού μπορούμε να ορίσουμε κάποιο process να περιέχει ένα ή και περισσότερα threads (lightweight processes) οι οποίες εκτελούν κάθε μια ξεχωριστά τον κώδικα του προγράμματος. Είναι σαν να έχουμε πολλά processes που εκτελούνται παράλληλα μέσα στο αρχικό process. 9

Υλοποίηση των Threads (α Τρόπος) Δημιουργία υποκλάσης της κλάσης Thread. Ενδείκνυται στις περιπτώσεις που η κλάση μας δεν απαιτείται να κληρονομήσει μεθόδους από κάποια κλάση πέραν της Thread. Στην υποκλάση της Thread ανατίθεται κώδικας προς εκτέλεση υπερκαλύπτοντας (override) τη μέθοδο run() της κλάσης Thread. To Thread συμπληρώνει τον κύκλο ζωής του όταν ολοκληρωθεί η εκτέλεση της μεθόδου run( ). 10

Μέθοδοι της κλάσης Thread run(): Εμπεριέχει τον κώδικα που εκτελείται υπό την επίβλεψη του thread. Δεν καλείται ποτέ άμεσα. Παρακάμπτεται από τον προγραμματιστή. start(): εκκινεί την εκτέλεση του κώδικα που εμπεριέχεται στη μέθοδο run(). sleep(int t): αδρανοποιεί την εκτέλεση του Thread για t msec. 11

Υλοποίηση των Threads - α Τρόπος Η πρώτη μέθοδος είναι ένας constructor που δέχεται ως όρισμα ένα string. Ο constructor καλεί έναν από τους constructors της κλάσης Thread. H run μπορεί να θεωρείται ως η καρδιά ενός thread - εδώ ορίζονται οι εντολές τις οποίες πρόκειται να εκτελέσει το thread. (1/2) 12

Υλοποίηση των Threads - α Τρόπος (2/2) H κλάση twothreads διαθέτει την μέθοδο main στην οποία δημιουργούνται δυο threads ένα που που ονομάζεται Jamaica και ένα που ονομάζεται Fiji. class TwoThreadsTest { public static void main (String[] args) { new SimpleThread("Jamaica").start(); new SimpleThread("Fiji").start(); } } Output 0 Jamaica 0 Fiji 1 Fiji 1 Jamaica 2 Jamaica 2 Fiji 3 Fiji 3 Jamaica 4 Jamaica 4 Fiji 5 Jamaica 5 Fiji 6 Fiji 6 Jamaica 7 Jamaica 7 Fiji 8 Fiji 9 Fiji 8 Jamaica DONE! Fiji 9 Jamaica DONE! Jamaica 13

Υλοποίηση Threads σε υποκλάσεις (υπερκλάση Thread) public class AppletWithThread extends Applet extends Thread {..}. ΛΑΘΟΣ (Η Java δεν υποστηρίζει πολλαπλή κληρονομικότητα). Στην περίπτωση αυτή, η αξιοποίηση της λειτουργικότητας των Threads είναι εφικτή με τη χρήση ενός interface. Runnable interface: Επιβάλλει τον ορισμό μιας μεθόδου public void run( ) στις κλάσεις που το υλοποιούν. 14

Υλοποίηση των Threads σε υποκλάσεις (2ος τρόπος) Δημιουργία κλάσης που υλοποιεί το Runnable interface. Δημιουργία ενός Thread με όρισμα στον κατασκευαστή αντικείμενο κλάσης η οποία υλοποιεί το Runnable interface. 15

Υλοποίηση των Threads β Τρόπος (1/2) H start() μέθοδος του applet εξετάζει εάν clockthread = null. Εάν είναι σημαίνει οτι το Clock Applet έχει μολις αρχίσει να εκτελείται ή έχει σταματήσει η εκτέλεσή του. Και στις δυο περιπτώσεις χρειάζεται η δημιουργία ενός νέου thread. Το this είναι η αναφορά σε στιγμιότυπο της κλάσης Clock. 16

Υλοποίηση των Threads β Τρόπος (2/2) 17

Σύνοψη (1/2) Για τη δημιουργία threads χρησιμοποιήθηκαν δύο διαφορετικοί κατασκευαστές: Για υποκλάσεις της Thread: Thread(String name). String name: το όνομα του Thread. 18

Σύνοψη (2/2) Για κλάσεις με υπερκλάση Thread. Thread(Runnable obj,string name). Runnable Obj: αντικείμενο που υλοποιεί το Runnable interface. String name: το όνομα που ανατίθεται στο Thread. 19

Συγχρονισμός Threads Ο συγχρονισμός των Threads είναι εκτός ύλης του μαθήματος. Όσοι ενδιαφέρονται να ασχοληθούν μπορούν να ανατρέξουν στις σημειώσεις της ενότητας. 20

Βιβλιογραφία 1. Java προγραμματισμός, Όγδοη έκδοση, Deitel Paul J., Deitel Harvey M., Εκδόσεις Γκιούρδας Μ.. 2. Απόλυτη Java, Savitch, Εκδόσεις ΙΩΝ, 2008. 3. Πλήρες εγχειρίδιο της Java 6, Lemay Cadenhead, Εκδόσεις Γκιούρδας Μ., Αθήνα 2007. 21

Τέλος Ενότητας