Heim > Java > javaLernprogramm > Hauptteil

So überprüfen Sie den Thread-Ausführungsstatus in Java

WBOY
Freigeben: 2023-05-03 22:31:05
nach vorne
2902 Leute haben es durchsucht

1. Überprüfen Sie den laufenden Status des Threads

Frage

Threads haben die folgenden 6 Zustände: neu, läuft, blockiert und Warten, zeitgesteuertes Warten und Beenden.

Wenn ein neuer Thread erstellt wird, befindet sich der Thread im neu erstellten Zustand.

Wenn die start()-Methode aufgerufen wird, befindet sich der Thread im laufenden Zustand.

Wenn ein Thread die integrierte Sperre eines Objekts erhalten muss und die Sperre einem anderen Thread gehört, wird der Thread blockiert.

Wenn ein Thread darauf wartet, dass andere Threads den Scheduler darüber informieren, dass er ausgeführt werden kann, befindet sich der Thread im Wartezustand.

Bei einigen Methoden, die Zeitparameter enthalten, wie z. B. der Sleep()-Methode der Thread-Klasse, kann der Thread in einen Timing-Wartezustand versetzt werden.

Wenn die Ausführung der run()-Methode beendet ist oder eine Ausnahme auftritt, befindet sich der Thread in einem beendeten Zustand.

Implementierung: Überprüfen Sie den laufenden Status des Threads.

2. Ideen zur Problemlösung

Erstellen Sie eine Klasse: ThreadState, implementieren Sie die Runnable-Schnittstelle

Definieren Sie 3 Methoden:

#🎜 🎜 #
  • waitForASecond(): Lassen Sie den aktuellen Thread 0,5 Sekunden warten oder andere Threads rufen die Methode notify() oder notifyAll() auf

  • waitForYears(): Lassen Sie den aktuellen Thread ewig warten, bis andere Threads die Methode notify() oder notifyAll() aufrufen Zustand durch Aufrufen der Methode wait() Thread

  • Verwenden Sie die Methode getState() der Klasse Thread, um den Status des Threads abzurufen.

    Der Rückgabewert dieser Methode ist Tread.State
3. Detaillierte Codeerklärung

package com.xiaoxuzhu;

/**
 * Description: 
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre class="brush:php;toolbar:false">
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/10.1	    xiaoxuzhu		2022/5/10		    Create
 * 
* @date 2022/5/10 */ public class ThreadState implements Runnable { public synchronized void waitForASecond() throws InterruptedException { wait(500); // 使当前线程等待0.5秒或其他线程调用notify()或notifyAll()方法 } public synchronized void waitForYears() throws InterruptedException { wait(); // 使当前线程永久等待,直到其他线程调用notify()或notifyAll()方法 } public synchronized void notifyNow() throws InterruptedException { notify(); // 唤醒由调用wait()方法进入等待状态的线程 Thread.sleep(100);//留时间打印 } public void run() { try { waitForASecond(); // 在新线程中运行waitForASecond()方法 waitForYears(); // 在新线程中运行waitForYears()方法 } catch (InterruptedException e) { e.printStackTrace(); } } }
Nach dem Login kopieren

Testklasse:

package com.xiaoxuzhu;

/**
 * Description:
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre class="brush:php;toolbar:false">
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/10.1	    xiaoxuzhu		2022/5/10		    Create
 * 
* @date 2022/5/10 */ public class Test { public static void main(String[] args) throws InterruptedException { ThreadState state = new ThreadState();// 创建State对象 Thread thread = new Thread(state);// 利用State对象创建Thread对象 System.out.println("新建线程:" + thread.getState());// 输出线程状态 thread.start(); // 调用thread对象的start()方法,启动新线程 System.out.println("启动线程:" + thread.getState());// 输出线程状态 Thread.sleep(100); // 当前线程休眠0.1秒,使新线程运行waitForASecond()方法 System.out.println("计时等待:" + thread.getState());// 输出线程状态 Thread.sleep(1000); // 当前线程休眠1秒,使新线程运行waitForYears()方法 System.out.println("等待线程:" + thread.getState());// 输出线程状态 state.notifyNow(); // 调用state的notifyNow()方法 System.out.println("唤醒线程:" + thread.getState());// 输出线程状态 Thread.sleep(1000); // 当前线程休眠1秒,使新线程结束 System.out.println("终止线程:" + thread.getState());// 输出线程状态 } }
Nach dem Login kopieren
#🎜 🎜#

Das obige ist der detaillierte Inhalt vonSo überprüfen Sie den Thread-Ausführungsstatus in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!