线程池调用案例

Runnable:
	@Test
	public void testFixedThreadPool() {
		ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
		for (int i = 0; i < 10; i++) {
			final int index = i;
			fixedThreadPool.execute(() -> {
				try {
					log.info("newFixedThreadPool,index:{}", index);
				} catch (Exception e) {
					log.info("newFixedThreadPool,index:{},ErrorMsg:{}", index, e.getMessage());
				}
			});
		}
		fixedThreadPool.shutdown();
		while(true){
			if(fixedThreadPool.isTerminated()){
				log.info("endd");
				break;
			}
		}
		log.info("end");
	}
Callable:
  @Test
	public void testCallable() {
		ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
		List<Future<String>> resultList = Lists.newArrayList();
		for (int i = 0; i < 10; i++) {
			final int index = i;
			Future<String> future = fixedThreadPool.submit(() -> {
				try {
					Thread.sleep(2000);
					log.info("newFixedThreadPool,index:{}", index);
				} catch (Exception e) {
					log.info("newFixedThreadPool,index:{},ErrorMsg:{}", index, e.getMessage());
				}
				return "success";
			});
			resultList.add(future);
		}
		resultList.forEach(x -> {
			try {
				log.info("result:{}", x.get());
			} catch (InterruptedException e) {
				e.printStackTrace();
			} catch (ExecutionException e) {
				fixedThreadPool.shutdownNow();
				e.printStackTrace();
				return;
			}
		});
		log.info("end");
	}
参考:

https://blog.csdn.net/qq_31441667/article/details/78830395

https://blog.csdn.net/lisheng19870305/article/details/44747741

https://mp.weixin.qq.com/s/GvJvDtMYERHSTVWQaY9BEg

posted @ 2018-09-17 16:28  hongdada  阅读(202)  评论(0编辑  收藏  举报