在使用线程池的时候,有两个方法可以调用,
无返回值异步调用:execute()方法,底层使用Runnable的run()
有返回值异步调用:submit()方法,底层使用Callable的call()
话不多说,上代码
//submit
ExecutorService executorService = Executors.newFixedThreadPool(3);
Future<String> future = executorService.submit(new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(5000);
System.out.println("submit方法执行任务完成" + " thread name: " + Thread.currentThread().getName());
return SUCCESS;
}
});
System.out.println(future.get());
//submit lambda表达式
Future<String> a = executorService.submit(()->{
System.out.println(" thread namea: " + Thread.currentThread().getName());
Thread.sleep(5000);
System.out.println("submita方法执行任务完成" + " thread name: " + Thread.currentThread().getName());
return "a";
});
//execute
executorService.execute(()->{
System.out.println(" thread nameb: " + Thread.currentThread().getName());
System.out.println("execute方法执行任务完成" + " thread name: " + Thread.currentThread().getName());
});
ThreadPoolExecutor中的submit()方法详细讲解 https://blog.csdn.net/qq_33689414/article/details/72955253