Étude approfondie de plusieurs états des threads Java et de leur impact sur l'exécution du programme
En Java, un thread est une unité d'exécution légère qui peut s'exécuter indépendamment dans un programme et effectuer des tâches spécifiques. L'état d'un thread décrit les différentes étapes de l'exécution d'un thread. Comprendre l'état d'un thread est très important pour écrire des programmes multithread et optimiser les performances du programme. Cet article examinera plusieurs états des threads Java et leur impact sur l'exécution du programme, et fournira des exemples de code spécifiques.
Les différents états des threads Java incluent : NEW (nouveau), RUNNABLE (exécutable), BLOCKED (bloqué), WAITING (en attente), TIMED_WAITING (en attente chronométrée) et TERMINATED (terminé).
Thread thread = new Thread(() -> { System.out.println("Hello, World!"); });
Thread thread = new Thread(() -> { System.out.println("Hello, World!"); }); thread.start();
public class MyRunnable implements Runnable { private Object lock = new Object(); public void run() { synchronized(lock) { System.out.println("In synchronized block"); // 一些代码 } } public static void main(String[] args) { MyRunnable runnable = new MyRunnable(); Thread thread1 = new Thread(runnable); Thread thread2 = new Thread(runnable); thread1.start(); thread2.start(); } }
Dans le code ci-dessus, deux threads tentent d'entrer dans le bloc synchronisé en même temps, car le verrou est partagé, le deuxième thread entrera dans le blocage état jusqu'à ce que le premier thread termine l'exécution et libère le verrou.
public class MyThread extends Thread { public void run() { synchronized(this) { System.out.println("Waiting for next thread..."); try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Thread resumed."); } } public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized(thread) { thread.notify(); } } }
Dans le code ci-dessus, une fois que le thread est entré dans l'état d'attente, le thread principal réveille le thread via la méthode notify().
public class MyThread extends Thread { public void run() { try { System.out.println("Thread sleeping..."); Thread.sleep(2000); System.out.println("Thread woke up."); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } }
Dans le code ci-dessus, le thread entre dans l'état d'attente planifié en appelant la méthode sleep() et attend 2 secondes avant d'être réveillé.
En résumé, le statut du thread a un impact important sur l'exécution du programme. Comprendre les différents états et leur signification est crucial pour écrire des programmes multithread efficaces.
Matériaux de référence :
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!