Maison  >  Article  >  Java  >  Comment utiliser attendre pour changer l'état du fil en Java

Comment utiliser attendre pour changer l'état du fil en Java

WBOY
WBOYavant
2023-04-29 22:01:12940parcourir

Explication

1. Il appartient à la classe Object. Une fois que l'objet a appelé la méthode wait, il libère le thread qui détient actuellement le verrou de l'objet et entre dans le file d'attente.

2. L'autre partie appelle notify pour réveiller le verrou du concurrent à partir d'un fil sélectionné au hasard dans la file d'attente, et l'autre partie appelle notifyall pour réveiller le verrou du concurrent à partir de tous les fils de la file d'attente. .

Exemple

public class Demo {
    public static void main(String[] args) {
        Demo demo = new Demo();
        Thread t1 = new Thread(() -> {
            synchronized (demo) {
                System.out.println("t1 start");
                try {
                    demo.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("t1 end");
            }
        });
        Thread t2 = new Thread(() -> {
           synchronized (demo) {
               System.out.println("t2 start");
               System.out.println("t2 end");
               demo.notify();
           }
        });
        t1.start();
        t2.start();
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer