4 Threads T1 et T2, T1 a obtenu 10 Mo de mémoire, T2 a obtenu 15 Mo de mémoire, T1 et T2 ont tous deux besoin d'obtenir 30 Mo de mémoire pour fonctionner, mais la mémoire disponible restante est de 10 Mo, donc les deux threads s'attendent pour libérer des ressources mémoire 3. Échange de données par questions et réponses : le serveur ouvre un certain port et attend que le client y accède. Une fois que le client a envoyé la demande, le serveur manque la demande du client pour une raison quelconque, ce qui entraîne le client. attendre que le serveur réponde, pendant que le serveur attend le client. Envoyer des requêtes
4. Deadlock causé par une boucle infinie : Vous ne pouvez pas voir le blocage en utilisant des outils tels que jstack, mais le programme ne fonctionne pas. et l'occupation du processeur est élevée. Ce type de blocage est également appelé animation suspendue du système, ce qui est difficile à dépanner et à redémarrer maintenant
Instancepublic class Main { private final Object MUTEX_READ = new Object(); private final Object MUTEX_WRITE = new Object(); public void read(){ synchronized (MUTEX_READ){ synchronized (MUTEX_WRITE){ } } } public void write(){ synchronized (MUTEX_WRITE){ synchronized (MUTEX_READ){ } } } public static void main(String[] args) throws InterruptedException { Main m = new Main(); new Thread(()->{ while (true){ m.read(); } }).start(); new Thread(()->{ while (true){ m.write(); } }).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!