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

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

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

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

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

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

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

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

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

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

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

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

Μάρκετινγκ Αγροτικών Προϊόντων

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

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

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

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

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

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

Ιστορία της μετάφρασης

Παράκτια Τεχνικά Έργα

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 8: Ταυτοχρονισμός και νήματα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Θεωρία Πιθανοτήτων & Στατιστική

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

Νήµαταστην Java. Συγχρονισµός νηµάτων Επικοινωνία νηµάτων Εκτελέσιµα αντικείµενα Νήµατα δαίµονες Οµάδες νηµάτων. Κατανεµηµένα Συστήµατα 11-1

Αυτοματοποιημένη χαρτογραφία

Δομές Δεδομένων Ενότητα 1

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

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

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

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

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

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 1: Εισαγωγικό Μάθημα

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

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Εισαγωγή στην Πληροφορική

Αυτοματοποιημένη χαρτογραφία

Πληροφοριακά Συστήματα & Περιβάλλον Ασκήσεις

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

Εισαγωγή στην Πληροφορική

Κινητά και Διάχυτα Συστήματα. Ενότητα # 3: Νήματα και ταυτοχρονισμός Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Δίκαιο Μ.Μ.Ε. Μάθημα 6: Το Εθνικό Συμβούλιο Ραδιοτηλεόρασης- Αρμοδιότητες Επικ. Καθηγητής Παναγιώτης Μαντζούφας Τμήμα Νομικής Α.Π.Θ.

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Αυτοματοποιημένη χαρτογραφία

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Διοικητική Λογιστική

Μηχανολογικό Σχέδιο Ι

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

Μάρκετινγκ Αγροτικών Προϊόντων

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Εισαγωγή στην Πληροφορική

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Η ΣΥΝΕΧΙΖΟΜΕΝΗ ΕΚΠΑΙΔΕΥΣΗ ΣΤΙΣ ΧΩΡΕΣ-ΜΕΛΗ ΤΗΣ Ε.Ε: ΘΕΣΜΟΙ ΚΑΙ ΠΡΑΚΤΙΚΕΣ

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

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

Μάρκετινγκ Αγροτικών Προϊόντων

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

Διάλεξη Εισαγωγή στη Java, Μέρος Γ

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

Λογιστικές Εφαρμογές Εργαστήριο

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Αποκωδικοποίηση. Εισαγωγή στη διδακτική των γλωσσών. Γεώργιος Υψηλάντης, αναπληρωτής καθηγητής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Οικονομία των ΜΜΕ. Ενότητα 7: Μορφές αγοράς και συγκέντρωση των ΜΜΕ

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

Περιφερειακή Ανάπτυξη

Η πρόσληψη της Καινής Διαθήκης στη λογοτεχνία και την τέχνη

Εισαγωγή στους Αλγορίθμους

Θεωρία Πιθανοτήτων & Στατιστική

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

Οικονομική Γεωργικών Εκμεταλλεύσεων

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

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

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

Λογισμός 3. Ενότητα 12:Οι κλασικοί μετασχηματισμοί και ο κανόνας της αλυσίδας. Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Οικονομία των ΜΜΕ. Ενότητα 9: Εταιρική διασπορά και στρατηγικές τιμολόγησης

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Αυτοματοποιημένη χαρτογραφία

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

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

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

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

Εισαγωγή στους Αλγορίθμους

Σχεδίαση με Ηλεκτρονικούς Υπόλογιστές

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 13: Ταυτόχρονος Προγραμματισμός Γρηγόρης Τσουμάκας, Επικ. Καθηγητής

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

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

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Ταυτόχρονος Προγραμματισμός

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τα παραδείγματα κώδικα που χρησιμοποιούνται σε κάποιες από τις ακόλουθες διαφάνειες μπορούν να βρεθούν στον παρακάτω σύνδεσμο: http://users.auth.gr/greg/oop.zip

Ταυτόχρονο Λογισμικό Λειτουργικά συστήματα. Προγραμματίζουμε, ακούμε μουσική, γράφουμε έγγραφα, εκτυπώνουμε, κατεβάζουμε αρχεία, κ.α. Εφαρμογή διαδικτυακού ραδιοφώνου. Ανάγνωση δεδομένων από το δίκτυο, αποσυμπίεση, αναπαραγωγή, ενημέρωση διεπαφής. Χρονομερίδια

Διαδικασίες και Νήματα Διαδικασίες (processes). Έχουν το δικό τους περιβάλλον εκτέλεσης, όπως χώρο μνήμης και ανοιχτά αρχεία. Συνήθως μια διαδικασία είναι ένα πρόγραμμα. Νήματα (threads). Τα νήματα μοιράζονται τους πόρους της διαδικασίας στην οποία ανήκουν. Μια διαδικασία έχει ένα ή παραπάνω νήματα.

Ταυτόχρονος Προγραμματισμός Πολυνηματικές εφαρμογές. Ανάπτυξη εφαρμογών που μπορούν να εκτελούν ταυτόχρονα πολλά νήματα. Οφέλη. Δημιουργία ταυτόχρονου λογισμικού. Επιτάχυνση εκτέλεσης εργασιών μέσω της εκμετάλλευσης πολλαπλών πυρήνων.

Δημιουργία και Εκτέλεση Νήματος Τρόπος Α. Yποσκέλιση της μεθόδου run() της κλάσης Thread. Δημιουργία αντικειμένου της νέας κλάσης και κλήση της μεθόδου start() της κλάσης Thread. Τρόπος Β. Πέρασμα στον κατασκευαστή της Thread ενός αντικειμένου μιας κλάσης που υλοποιεί τη διεπαφή Runnable, η οποία περιέχει μέθοδο run(). Κλήση της start(). HelloRunnable.java, HelloThread.java

Αναστολή Εκτέλεσης Αναστολή εκτέλεσης. Thread.sleep(long millis). Thread.sleep(long millis, int nanos). Απαιτεί χειρισμό της InterruptedException. Σε περίπτωση που κάποιο άλλο νήμα το ενημερώσει να διακόψει την αναστολή εκτέλεσης. Sleep.java

Διακοπή (Interrupt) Διακοπή. Ενημέρωση ενός νήματος ότι θα πρέπει να σταματήσει αυτό που κάνει και να κάνει κάτι άλλο. Ο προγραμματιστής καθορίζει το τι ακριβώς. Ενημέρωση του νήματος. Κλήση της μεθόδου interrupt() του νήματος. Κλήση της μεθόδου Thread.interrupted() από το νήμα για να ελέγξει αν του έχει σταλεί διακοπή. Interrupt.java

Αναμονή Ολοκλήρωσης Αναμονή ολοκλήρωσης ενός νήματος. Κλήση της μεθόδου join() του νήματος που θέλουμε να περιμένουμε να τελειώσει. Απαιτεί χειρισμό της InterruptedException. Σε περίπτωση που κάποιο άλλο νήμα το ενημερώσει να διακόψει την αναμονήςολοκλήρωσης. Join.java

Συγχρονισμός Προβλήματα συγχρονισμού. Μπέρδεμα νημάτων. Αντιμετώπιση. Συγχρονισμένες μέθοδοι. Συγχρονισμένες προτάσεις.

Μπέρδεμα Νημάτων Μπέρδεμα νημάτων. Δύο λειτουργίες που περιλαμβάνουν πολλαπλά βήματα και αφορούν στην ίδια δομή δεδομένων. Αν τα βήματα εκτελεστούν ταυτόχρονα, ενδέχεται το αποτέλεσμα να μην είναι το επιθυμητό. CounterThread.java, Counter.java

Συγχρονισμένες Μέθοδοι Προσθήκη synchronized στη δήλωση. Δεν επιτρέπεται να εκτελεστούν ταυτόχρονα δύο συγχρονισμένες μέθοδοι του ίδιου αντικειμένου. Άλλες κλήσεις προς συγχρονισμένες μεθόδους περιμένουν μέχρι να τελειώσει η τρέχουσα. SynchronizedCounterThread.java, SynchronizedCounter.java

Εγγενείς Κλειδαριές Εγγενής κλειδαριά. Κάθε αντικείμενο έχει και μια κλειδαριά. Όταν ένα νήμα καλεί μια συγχρονισμένη μέθοδο, αυτομάτως κλειδώνει το αντικείμενο. Όταν τελειώσει με την εκτέλεση της μεθόδου, τότε το αντικείμενο ξεκλειδώνεται.

Συγχρονισμένες Προτάσεις (1/2) Συγχρονισμένες προτάσεις. Μπλοκ συγχρονισμένου κώδικα που καθορίζουν και το αντικείμενο που κλειδώνουν. Παράδειγμα. public void addname(string name) { synchronized(this) { lastname = name; namecount++; // κώδικας που δεν απαιτεί συγχρονισμό

Συγχρονισμένες Προτάσεις (2/2) public class Locks { private long c1 = 0; private long c2 = 0; private Object lock1 = new Object(); private Object lock2 = new Object(); public void inc1() { synchronized(lock1) { c1++; public void dec1() { synchronized(lock1) { c1--; public void inc2() { synchronized(lock2) { c2++; public void dec2() { synchronized(lock2) { c2--;

Αμετάλλακτα Αντικείμενα Υπενθύμιση. Αντικείμενα των οποίων η κατάσταση δεν μπορεί να αλλάξει. Π.χ. αντικείμενα της κλάσης String. Χρήσιμα στον ταυτόχρονο προγραμματισμό. Δεν πρόκειται να βρεθούν σε «ανεπιθύμητη» κατάσταση λόγω προβλημάτων συγχρονισμού.

Παράδειγμα (1/2) public class SynchronizedRGB { private int red; private int green; private int blue; public SynchronizedRGB(int r, int g, int b) { red = r; green = g; blue = b; public synchronized void set(int r, int g, int b) { red = r; green = g; blue = b; public synchronized void invert() { red = 255 - red; green = 255 - green; blue = 255 - blue;

Παράδειγμα (2/2) public class ImmutableRGB { private int red; private int green; private int blue; public ImmutableRGB(int r, int g, int b) { red = r; green = g; blue = b; public ImmutableRGB invert() { return new ImmutableRGB(255 red, 255 green, 255-blue);

Νήματα και Γραφικές Διεπαφές Νήμα αποστολής γεγονότων. Νήμα στο οποίο τρέχει ο κώδικας διαχείρισης γεγονότων στη Swing. Απαραίτητο για αποφυγή προβλημάτων συγχρονισμού. Τι θα συμβεί όμως αν μια λειτουργία καθυστερήσει να τελειώσει; Η αλληλεπίδραση θα «παγώσει». Concurrency.java

Παράλληλο Άθροισμα Πίνακα Παράδειγμα αξιοποίησης νημάτων για επιτάχυνση της εκτέλεσης σε περιβάλλοντα με πολλούς πυρήνες. ParallelSum.java, PartialSum.java

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τέλος Ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, Εαρινό Εξάμηνο 2013-2014