Les méthodes wait(), notify() et notifyAll() font partie intégrante du modèle de concurrence de Java. Ils appartiennent à la classe Object, qui est la racine de la hiérarchie des classes en Java. Cela signifie que chaque classe Java hérite de ces méthodes de la classe Object.
La classe Object est la superclasse de toutes les classes en Java. Il fournit un ensemble de méthodes de base dont chaque classe hérite, notamment toString(), equals() et hashCode(). Les méthodes wait(), notify() et notifyAll() font également partie de cette classe, permettant aux threads de communiquer et de coordonner leurs activités.
Pour comprendre le fonctionnement de ces méthodes, regardons quelques exemples pratiques.
Voici un exemple simple illustrant l'utilisation de ces méthodes :
class SharedResource { private boolean available = false; public synchronized void consume() throws InterruptedException { while (!available) { wait(); // Wait until the resource is available } // Consume the resource System.out.println("Resource consumed."); available = false; notify(); // Notify that the resource is now unavailable } public synchronized void produce() { // Produce the resource available = true; System.out.println("Resource produced."); notify(); // Notify that the resource is available } } public class Main { public static void main(String[] args) { SharedResource resource = new SharedResource(); Thread producer = new Thread(() -> { try { while (true) { Thread.sleep(1000); // Simulate time to produce resource.produce(); } } catch (InterruptedException e) { e.printStackTrace(); } }); Thread consumer = new Thread(() -> { try { while (true) { resource.consume(); Thread.sleep(2000); // Simulate time to consume } } catch (InterruptedException e) { e.printStackTrace(); } }); producer.start(); consumer.start(); } }
Dans l'exemple ci-dessus :
Vous verrez le résultat suivant indiquant les opérations du producteur et du consommateur :
Resource produced. Resource consumed. ...
Cette sortie montre comment wait(), notify() et notifyAll() coordonnent l'interaction producteur-consommateur.
En comprenant à quelle classe appartiennent les méthodes wait(), notify() et notifyAll() et comment elles fonctionnent, vous pouvez gérer efficacement communication inter-thread dans vos applications Java. Ces méthodes sont essentielles pour garantir que les threads coopèrent et partagent efficacement les ressources.
Si vous avez des questions ou avez besoin de précisions supplémentaires, n'hésitez pas à laisser un commentaire ci-dessous !
Lisez les articles plus sur : À quelle classe appartiennent les méthodes wait(), notify() et notifyAll() ?
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3