Action 1
Aναπτύξετε την δική σας δεύτερη έκδοση της SleepingBarberApp.
Περιορισμός 2ης φάσης: ο κουρέας δεν μπορεί να κουρεύει ταυτόχρονα δύο ή παραπάνω πελάτες του.
Οδηγίες
Στην περιγραφή της συμπεριφοράς της κλάσης που αναπαριστά τα ανθρωπάκια μας, την οποία δώσατε στα πλαίσια της 1ης έκδοσης εντοπίστε το τμήμα εκείνο που αποτελεί τον κρίσιμο τομέα. Θέλουμε να διασφαλίσουμε ότι μόνο ένα ανθρωπάκι μπορεί να βρίσκετε στον κρίσιμο τομέα του, δηλαδή ότι το ανθρωπάκι Χ θα εισέρχεται στον κρίσιμο τομέα του μόνο όταν κανένα άλλο ανθρωπάκι δεν είναι στο κρίσιμο τομέα του. Αν συμβεί κάποιο άλλο ανθρωπάκι να είναι στον κρίσιμο τομέα του όταν το ανθρωπάκι Χ εκφράσει την επιθυμία του να εισέλθει στον δικό του κρίσιμο τομέα τότε αυτό θα πρέπει να περιμένει να ελευθερωθεί πρώτα ο πόρος. Τροποποιήστε τον κώδικα της άσκησης σας ώστε να πετύχετε την ζητούμενη συμπεριφορά.
A1.1. Δώστε λύση αξιοποιώντας την κατασκευή του synchronized block
synchronized (object reference expression) {
//code block
}
A.1.2. Δώστε την πρόταση σας για την ικανοποίηση του περιορισμού της φάσης αυτής αξιοποιώντας την κατασκευή του Σημαφόρου.
A1.3. Δώστε την πρόταση σας για την ικανοποίηση του περιορισμού της φάσης αυτής αξιοποιώντας την κατασκευή του Monitor.
A.1.4. Κάντε σύγκριση μεταξύ των εναλλακτικών υλοποιήσεων. Ποια θα προτιμούσατε; Αιτιολογείστε.
Screenshot of the 2nd Version