JAVA発令銃工具
発令銃
発令銃はN人の選手を準備し、準備を行い、選手全員が着席し、内部実現を開始する主にソースコードのstateによって実現され、volatileキーワード修飾(スレッド切り替え時に最新のデータを取得する)翠花上コード
発令銃はN人の選手を準備し、準備を行い、選手全員が着席し、内部実現を開始する主にソースコードのstateによって実現され、volatileキーワード修飾(スレッド切り替え時に最新のデータを取得する)翠花上コード
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
/**
* ,
* 1、
* 2、 doWork
* @author sloar, [email protected]
* @create 2019/9/16 18:11
**/
public class CountDownLatchTest {
// TODO
private static final int N = 10;
public static void main(String rgs[]) throws InterruptedException {
//
CountDownLatch doneSignal = new CountDownLatch(N);
Executor service = Executors.newCachedThreadPool();
for (int i = 0; i < N; ++i) // create and start threads
service.execute(new WorkerRunnable(doneSignal, i));
doneSignal.await(); // wait for all to finish
}
}
class WorkerRunnable implements Runnable {
private final CountDownLatch doneSignal;
private final int i;
WorkerRunnable(CountDownLatch doneSignal, int i) {
this.doneSignal = doneSignal;
this.i = i;
}
public void run() {
doWork(i);
doneSignal.countDown();
}
// TODO
void doWork(int i) {
System.out.println(i + "--->"+ Demo.getInstance());
}
}