Java线程池excute和submit分别在什么时候用,如何选择?

Java线程池excute和submit分别在什么时候用,如何选择?
有没有总结的最贱实践经验?

阅读 2.7k
2 个回答

这种问题不是可以百度到吗....
submit有返回值. execute没返回值
拿到返回结果后可以自己做一些回调处理.

ThreadPoolExecutor为例分析
AbstractExecutorService#submit(java.lang.Runnable, T)
AbstractExecutorService#submit(java.lang.Runnable)
AbstractExecutorService#submit(java.util.concurrent.Callable<T>)
这3个重载函数,返回值是Future<T>类型而ThreadPoolExecutor#execute(Runnable)返回值为void,在submit方法里面也调用了execute方法都是用来执行任务,区别submit返回Future可以对任务状态判断、等待、取消和返回结果,而execute是不能通过返回值来判断任务执行完成的状态。如何选择需要看业务场景。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题