package testBy20170925;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.*;
/**
* Created by yujiahuan on 2017/9/22.
*/
public class TestNewFixPool {
static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
public static String getDateStr() {
String ret = sdf.format(new Date());
return ret;
}
ExecutorService executorService = new ThreadPoolExecutor(5, 5, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());
/**
*/
public void submit(CountDownLatch latch) {
executorService.execute(new LoggingDto(latch));
}
/**
*/
private class LoggingDto implements Runnable {
private CountDownLatch latch;
public LoggingDto(CountDownLatch latch) {
this.latch = latch;
}
@Override
public void run() {
try {
System.out.println(getDateStr() + "start" + Thread.currentThread().getName());
Thread.sleep(1000);
latch.countDown();
System.out.println(getDateStr() + "end" + Thread.currentThread().getName());
} catch (Exception e) {
System.out.println(e);
}
}
}
public static void main(String arg[]) throws InterruptedException, BrokenBarrierException {
CountDownLatch latch = new CountDownLatch(10);
TestNewFixPool testNewFixPool = new TestNewFixPool();
long start = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
testNewFixPool.submit(latch);
}
latch.await();
System.out.println(getDateStr() + " usetime:" + (System.currentTimeMillis() - start));
}
}
学习理解
CountDownLatch