Java多线程(28)——JUC——线程池excutors系列(3)——ThreadPoolExcutor(2)——从源码去剖析线程池的原理

1.线程池的运行状态

 

2.

 

 

 

 

 

execute和submit方法有什么区别?

  • 1.execute是Executor制定的规范,submit是ExecutorService制定的规范
  • 2.execute只有接收Runnable参数的一种实现,submit重载的方法,既有接收Runnable参数的实现,也有接收Callable参数的实现
  • 3.execute() 方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功与否;
  • 4.submit()方法用于提交需要返回值的任务。线程池会返回一个future类型的对象,通过这个future对象可以判断任务是否执行成功,并且可以通过future的get()方法来获取返回值,get()方法会阻塞当前线程直到任务完成,而使用 get(long timeout,TimeUnit unit)方法则会阻塞当前线程一段时间后立即返回,这时候有可能任务没有执行完。

你可能感兴趣的:(#,Java多线程)