So verwenden Sie Thread in Java, spezifische Codebeispiele
Das Folgende ist ein Codebeispiel für die Verwendung von zwei Methoden zum Erstellen eines Threads:
// 继承Thread类 class MyThread extends Thread { public void run(){ // 线程执行的代码 } } // 实现Runnable接口 class MyRunnable implements Runnable { public void run(){ // 线程执行的代码 } } // 创建线程并启动 public static void main(String[] args){ // 创建继承Thread类的线程 MyThread thread1 = new MyThread(); thread1.start(); // 创建实现Runnable接口的线程 MyRunnable runnable = new MyRunnable(); Thread thread2 = new Thread(runnable); thread2.start(); }
Im obigen Code ruft der durch Erben der Thread-Klasse erstellte Thread direkt die Startmethode auf, um den Thread zu starten, während der Thread durch Implementierung erstellt wird Die Runnable-Schnittstelle Der Thread muss zuerst ein Thread-Objekt erstellen, das Objekt, das die Runnable-Schnittstelle implementiert, als Parameter an den Thread-Konstruktor übergeben und dann die Startmethode des Thread-Objekts aufrufen, um den Thread zu starten.
Das Folgende ist ein einfaches Beispiel, das den Lebenszyklus eines Threads zeigt:
class MyThread extends Thread { public void run(){ System.out.println("线程执行中"); try { Thread.sleep(1000); // 线程等待1秒 } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程执行结束"); } } public static void main(String[] args){ MyThread thread = new MyThread(); System.out.println("线程状态:" + thread.getState()); // 输出线程状态为New thread.start(); System.out.println("线程状态:" + thread.getState()); // 输出线程状态为Runnable // 等待线程执行结束 try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程状态:" + thread.getState()); // 输出线程状态为Terminated }
Im obigen Code wird nach dem Erstellen und Starten eines neuen Threads zunächst der Status des Threads als „Neu“ und dann der Status ausgegeben ist lauffähig. Nachdem Sie die Methode thread.join() aufgerufen und darauf gewartet haben, dass die Ausführung des Threads abgeschlossen ist, lautet der endgültige Ausgabestatus „Beendet“.
Java bietet Mechanismen wie das synchronisierte Schlüsselwort und die Lock-Schnittstelle, um Thread-Synchronisierung und gegenseitigen Ausschluss zu erreichen. Das Folgende ist ein Beispiel für die Verwendung des synchronisierten Schlüsselworts für die Thread-Synchronisierung:
class Counter { private int count = 0; // 线程安全的方法 public synchronized void increment(){ count++; } public int getCount(){ return count; } } public static void main(String[] args){ Counter counter = new Counter(); Runnable runnable = () -> { for(int i=0; i<10000; i++){ counter.increment(); } }; Thread thread1 = new Thread(runnable); Thread thread2 = new Thread(runnable); thread1.start(); thread2.start(); try { thread1.join(); thread2.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("计数器的值:" + counter.getCount()); // 输出:20000 }
Im obigen Codebeispiel wird eine threadsichere Counter-Klasse definiert, in der die Inkrementierungsmethode das synchronisierte Schlüsselwort verwendet, um gemeinsam genutzte Daten zu synchronisieren. Zwei Threads riefen gleichzeitig das Counter-Objekt auf. Jeder Thread führte 10.000 Zählvorgänge aus und gab schließlich das korrekte Ergebnis von 20.000 aus.
Hier ist ein Beispielcode, der zeigt, wie man einen Thread unterbricht:
class MyThread extends Thread { public void run(){ while(!isInterrupted()){ System.out.println("线程运行中"); try { Thread.sleep(1000); // 线程等待1秒 } catch (InterruptedException e) { e.printStackTrace(); break; } } System.out.println("线程中断"); } } public static void main(String[] args){ MyThread thread = new MyThread(); thread.start(); try { Thread.sleep(5000); // 主线程等待5秒 } catch (InterruptedException e) { e.printStackTrace(); } thread.interrupt(); // 中断线程 }
Im obigen Code wartet der Hauptthread nach dem Erstellen und Starten eines neuen Threads 5 Sekunden und unterbricht dann den untergeordneten Thread.
Zusammenfassung:
Dieser Artikel stellt die Verwendung der Thread-Klasse in Java vor und enthält einige spezifische Codebeispiele. Sie können einen Thread erstellen, indem Sie die Thread-Klasse erben oder die Runnable-Schnittstelle implementieren, und den Thread durch Aufrufen der Startmethode starten. Das Verständnis des Thread-Lebenszyklus und der Konzepte der Thread-Synchronisierung und des gegenseitigen Ausschlusses ist für das Schreiben robuster Multithread-Programme sehr wichtig. Gleichzeitig ist das Verständnis, wie Threads unterbrochen werden, ein wichtiger Wissenspunkt in der Multithread-Programmierung. Die Beherrschung dieser Inhalte kann Entwicklern helfen, Multithread-Programmierung zu nutzen, um die Programmeffizienz und Parallelität zu verbessern.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Threads in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!