Salinan kode adalah sebagai berikut:
paket com.yao;
impor java.util.concurrent.countdownlatch;
impor java.util.concurrent.executorservice;
impor java.util.concurrent.Executors;
/**
* Countdownlatch adalah penghitung, yang memiliki nomor awal,
* Utas menunggu penghitung ini harus menunggu sampai penghitung dihitung menjadi nol sebelum melanjutkan.
*/
CountdownLatchTest kelas publik {
/**
* Utas yang menginisialisasi komponen
*/
komponen kelas statis publik mengimplementasikan runnable {
// Menangkal
Latch Countdownlatch;
// ID Komponen
int id;
// Metode Bangun
Public ComponentThread (CountdownLatch Latch, int ID) {
this.latch = latch;
this.id = id;
}
public void run () {
// inisialisasi komponen
System.out.println ("Inisialisasi Komponen" + ID);
mencoba {
Thread.sleep (500 * id);
} catch (InterruptedException e) {
}
System.out.println ("komponen" + id + "diinisialisasi!");
// Kurangi penghitung satu
latch.countdown ();
}
}
/**
* Mulai server
*/
public static void starterver () melempar Exception {
System.out.println ("Server mulai.");
// Inisialisasi hitungan mundur dengan nilai awal 3
Latch CountdownLatch = NEW COUNTDOWNLATCH (3);
// Mulai 3 utas untuk memulai 3 komponen masing -masing
Layanan ExecutorService = Executors.NewCachedThreadPool ();
service.submit (komponen baru (kait, 1));
service.submit (komponen baru (kait, 2));
service.submit (komponen baru (kait, 3));
service.shutdown ();
// menunggu inisialisasi 3 komponen selesai
latch.Await ();
// Ketika semua tiga komponen yang diperlukan selesai, server dapat dilanjutkan
System.out.println ("Server Are Up!");
}
public static void main (string [] args) melempar pengecualian {
CountdownlatchTest.StartServer ();
}
}