การคัดลอกรหัสมีดังนี้:
แพ็คเกจ com.yo;
นำเข้า java.util.concurrent.countdownlatch;
นำเข้า java.util.concurrent.executorservice;
นำเข้า java.util.concurrent.executors;
-
* Countdownlatch เป็นตัวนับซึ่งมีหมายเลขเริ่มต้น
* เธรดที่รอตัวนับนี้จะต้องรอจนกว่าตัวนับจะนับเป็นศูนย์ก่อนดำเนินการต่อ
-
คลาสสาธารณะ Countdownlatchtest {
-
* เธรดที่เริ่มต้นส่วนประกอบ
-
Public Static Class ComponentThread ใช้งาน Runnable {
// เคาน์เตอร์
Latch Countdownlatch;
// ID ส่วนประกอบ
ID int;
// วิธีการสร้าง
Public ComponentThread (Latch CountDownlatch, int id) {
this.latch = latch;
this.id = id;
-
โมฆะสาธารณะเรียกใช้ () {
// เริ่มต้นส่วนประกอบ
System.out.println ("การเริ่มต้นส่วนประกอบ" + id);
พยายาม {
thread.sleep (500 * id);
} catch (interruptedException e) {
-
System.out.println ("ส่วนประกอบ" + id + "เริ่มต้น!");
// ลดลงเคาน์เตอร์โดยหนึ่ง
latch.countdown ();
-
-
-
* เริ่มเซิร์ฟเวอร์
-
public static void starterver () โยนข้อยกเว้น {
System.out.println ("เซิร์ฟเวอร์กำลังเริ่มต้น");
// เริ่มต้น Countdownlatch ด้วยค่าเริ่มต้นที่ 3
countdownlatch latch = new countdownlatch (3);
// เริ่ม 3 เธรดเพื่อเริ่ม 3 องค์ประกอบตามลำดับ
ExecutorService Service = Executors.NewCachedThreadPool ();
Service.submit (ใหม่ chomentHread (latch, 1));
Service.submit (ใหม่ chomentHread (latch, 2));
Service.submit (ใหม่ chomentHread (latch, 3));
Service.shutdown ();
// รอการเริ่มต้นของ 3 องค์ประกอบที่จะเสร็จสิ้น
latch.await ();
// เมื่อส่วนประกอบที่ต้องการทั้งหมดทั้งหมดเสร็จสมบูรณ์เซิร์ฟเวอร์สามารถดำเนินการต่อได้
System.out.println ("เซิร์ฟเวอร์ขึ้น!");
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {
countdownlatchtest.startserver ();
-
-