demo1
public ResultVo insertBatch() {
long startTime = System.currentTimeMillis();
ExecutorService executor = Executors.newFixedThreadPool(6);
for (int i = 0; i < 1000; i++) {
DmDatasourceEntity entity = new DmDatasourceEntity();
entity.setName("name" + i);
entity.setType("pgsql");
// dmDatasourceDao.insert(entity);
executor.submit(() -> {
dmDatasourceDao.insert(entity);
});
}
long endTime = System.currentTimeMillis();
logger.info("执行时间====================s" + (endTime - startTime) / 1000);
return ResultVo.success(null);
}
demo2 Executors 创建线程池不推荐
public static void main(String[] args)throws IOException, InterruptedException {
// 启动线程池
ExecutorService executorService =
new ThreadPoolExecutor(4,16,300, TimeUnit.MILLISECONDS,new LinkedBlockingQueue(),
Executors.defaultThreadFactory(),new ThreadPoolExecutor.AbortPolicy());
CountDownLatch countDownLatch =new CountDownLatch(1000);
for (int i =0; i <1000; i++) {
executorService.submit(() -> {
// 线程任务执行代码
System.out.println(Thread.currentThread().getName());
// 线程计数器
countDownLatch.countDown();
});
}
//等待任务执行完成
countDownLatch.await();
executorService.shutdown();
System.out.println("执行完成");
}
public static void main(String[] args)throws IOException, InterruptedException {
// 启动线程池
ExecutorService executorService =
new ThreadPoolExecutor(4, 16, 300, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
CountDownLatch countDownLatch =new CountDownLatch(1000);
for (int i =0; i <1000; i++) {
executorService.submit(() -> {
// 线程任务执行代码
System.out.println(Thread.currentThread().getName());
// 线程计数器
countDownLatch.countDown();
});
}
// 等待任务执行完成
countDownLatch.await();
executorService.shutdown();
System.out.println("执行完成");
}
demo3 带返回值使用
public static void main(String[] args)throws IOException, InterruptedException, ExecutionException {
// 启动线程池
ExecutorService executorService =
new ThreadPoolExecutor(4, 16, 300, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
CountDownLatch countDownLatch =new CountDownLatch(1000);
List> list = Lists.newArrayList();
for (int i =0; i <1000; i++) {
int j = i;
Future fut = executorService.submit(() -> {
// 线程任务执行代码
System.out.println(Thread.currentThread().getName());
// 线程计数器
// countDownLatch.countDown();
return j;
});
list.add(fut);
}
System.out.println("执行完成1");
// 等待任务执行完成
// countDownLatch.await();
// executorService.shutdown();
for (Future li : list) {
System.out.println(li.get());
}
System.out.println("执行完成2");
}