package controller;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Mytest {
public static void main(String[] args) {
ExecutorService service = Executors.newCachedThreadPool(); //創建一個線程池
final CountDownLatch cdOrder = new CountDownLatch(1);//指揮官的命令,設置爲1,指揮官一下達命令,則cutDown,變爲0,戰士們執行任務
final CountDownLatch cdAnswer = new CountDownLatch(1000);//因爲有三個戰士,所以初始值爲3,每一個戰士執行任務完畢則cutDown一次,當三個都執行完畢,變爲0,則指揮官停止等待。
for (int i = 0; i < 1000; i++) {
Runnable runnable = new Runnable() {
public void run() {
try {
HttpRequestUtil.sendGet("http://192.168.2.162:8087/send", "");
} catch (Exception e) {
} finally {
cdAnswer.countDown();
}
}
};
service.execute(runnable);//爲線程池添加任務
}
try {
cdOrder.countDown(); //發送命令,cdOrder減1,處於等待的戰士們停止等待轉去執行任務。
cdAnswer.await(); //命令發送後指揮官處於等待狀態,一旦cdAnswer爲0時停止等待繼續往下執行
System.out.println("線程" + Thread.currentThread().getName() +
"已收到所有響應結果");
} catch (Exception e) {
e.printStackTrace();
} finally {
}
service.shutdown(); //任務結束,停止線程池的所有線程
}
}