Heim >Java >javaLernprogramm >Detaillierte Erläuterung der Multithread-Synchronisationsklasse CountDownLatch
In diesem Artikel werden hauptsächlich die relevanten Kenntnisse der Multithread-Synchronisationsklasse CountDownLatch in Java vorgestellt, die einen guten Referenzwert hat. Werfen wir einen Blick darauf mit dem Editor unten
Bei der Multithread-Entwicklung stoßen wir häufig auf Vorgänge, die wir ausführen möchten, nachdem eine Gruppe von Threads abgeschlossen ist. Java bietet eine Multithread-Synchronisations-Hilfsklasse, die dies kann Führen Sie diese Art von Operation aus. Anforderungen: Gängige Methoden in der Klasse
Darunter die
Konstruktormethode: CountDownLatch(int count) Der Parameter count ist ein Zähler, dem im Allgemeinen die Anzahl der auszuführenden Threads zugewiesen wird.
long getCount(): Ermittelt den aktuellen Zählerwert.
void countDown(): Wenn der Zählerwert größer als Null ist, wird die Methode aufgerufen und der Zählerwert um 1 reduziert. Wenn der Zähler Null erreicht, werden alle Threads freigegeben.
void waiting(): Rufen Sie diese Methode auf, um den aktuellen Hauptthread zu blockieren, bis der Zähler auf Null sinkt.
Codebeispiel:
Thread-Klasse:import java.util.concurrent.CountDownLatch; public class TestThread extends Thread{ CountDownLatch cd; String threadName; public TestThread(CountDownLatch cd,String threadName){ this.cd=cd; this.threadName=threadName; } @Override public void run() { System.out.println(threadName+" start working..."); dowork(); System.out.println(threadName+" end working and exit..."); cd.countDown();//告诉同步类完成一个线程操作完成 } private void dowork(){ try { Thread.sleep(2000); System.out.println(threadName+" is working..."); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }Testklasse:
Ausgabeergebnisse:
import java.util.concurrent.CountDownLatch; public class TsetCountDownLatch { public static void main(String[] args) { try { CountDownLatch cd = new CountDownLatch(3);// 表示一共有三个线程 TestThread thread1 = new TestThread(cd, "thread1"); TestThread thread2 = new TestThread(cd, "thread2"); TestThread thread3 = new TestThread(cd, "thread3"); thread1.start(); thread2.start(); thread3.start(); cd.await();//等待所有线程完成 System.out.println("All Thread finishd"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }[Verwandte Empfehlungen]
thread1 start working... thread2 start working... thread3 start working... thread2 is working... thread2 end working and exit... thread1 is working... thread3 is working... thread3 end working and exit... thread1 end working and exit... All Thread finishd
1.
Java-kostenloses Video-TutorialGeek Academy Java Video TutorialAlibaba Java Development ManualDas obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Multithread-Synchronisationsklasse CountDownLatch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!