public static void main(String[] args) {
//声明countDownLatch
CountDownLatch countDownLatch = new CountDownLatch(2);
//创建pool
int corePoolSize = 2;
int maximumPoolSize = 10;
long keepAliveTime = 120;
TimeUnit timeUnit = TimeUnit.SECONDS;
BlockingDeque<Runnable> blockingDeque = new LinkedBlockingDeque<>(10);
ThreadPoolExecutor pool = new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime,timeUnit,blockingDeque);
//创建callable1,callable2
Callable<Long> callable1 = new Callable<Long>() {
@Override
public Long call() throws Exception {
System.out.println("callable1 begin");
Thread.sleep(10000);
System.out.println("callable1 end");
countDownLatch.countDown();
System.out.println("还需等待" + countDownLatch.getCount() + "个线程");
return 1L;
}
};
Callable<Long> callable2 = new Callable<Long>() {
@Override
public Long call() throws Exception {
System.out.println("callable2 begin");
Thread.sleep(3000);
System.out.println("callable2 end");
countDownLatch.countDown();
System.out.println("还需等待" + countDownLatch.getCount() + "个线程");
return 1L;
}
};
//执行
try {
System.out.println("thread start");
Future<Long> future1 = pool.submit(callable1);
Future<Long> future2 = pool.submit(callable2);
countDownLatch.await();
System.out.println(future1.isDone());
System.out.println(future2.isDone());
System.out.println("thread end");
}catch (InterruptedException e){
e.printStackTrace();
}
}
CountDownLatch
于 2020-08-21 14:01:52 首次发布