Sobes.tech
Junior — Middle

Ποια είναι τα βασικά μέθοδοι της κλάσης Object που χρησιμοποιούνται για εργασία με ροές και συγχρονισμό;

sobes.tech AI

Απάντηση από AI

Στην Java, η κλάση Object παρέχει αρκετές μεθόδους που χρησιμοποιούνται συχνά κατά την εργασία με νήματα και συγχρονισμό:

  • wait() — κάνει το τρέχον νήμα να περιμένει μέχρι ένα άλλο νήμα να καλέσει notify() ή notifyAll() στο ίδιο αντικείμενο. Χρησιμοποιείται για την οργάνωση της αναμονής μιας συγκεκριμένης κατάστασης.

  • notify() — ξυπνά ένα μόνο νήμα που περιμένει σε αυτό το αντικείμενο.

  • notifyAll() — ξυπνά όλα τα νήματα που περιμένουν σε αυτό το αντικείμενο.

Αυτές οι μέθοδοι πρέπει να καλούνται μέσα σε ένα συγχρονισμένο μπλοκ ή μέθοδο, διαφορετικά θα ριχτεί μια εξαίρεση IllegalMonitorStateException.

Παράδειγμα χρήσης:

synchronized (sharedObject) {
    while (!condition) {
        sharedObject.wait();
    }
    // Ενέργειες μετά την εκπλήρωση της συνθήκης
}

// Σε άλλο νήμα
synchronized (sharedObject) {
    // Αλλαγή κατάστασης
    sharedObject.notify();
}