zoukankan      html  css  js  c++  java
  • ThreadPoolExecutor中execute和submit的区别

    1:入参不同

      excute() 传入的是 Runable,

      submit 传入的是 Callable 或 Runable

      1):execute 方法源码

        public void execute(Runnable command) {
             ...      
      }

      2):submit方法源码

        public Future<?> submit(Runnable task) {
          ...       
       }
        public <T> Future<T> submit(Runnable task, T result) {
            ...
      }
        public <T> Future<T> submit(Callable<T> task) {
           ... 
      }

    2:回参不同

      execute 无返回值,submit 有返回值

      1):submit 底层调用的还是 execute 方法,传入Callable 也会转化为 Runable 并交给 execute方法处理。

      2):对submit 方法返回的结果(Future)进行 get() 的时候会导致调用方阻塞,直至 submit 内部异常或成功返回结果。

      3):submit 的异常封装在结果(Future)中,要调用 get() 方法才会抛出异常,否则无法抛出异常。

  • 相关阅读:
    最长公共子序列(LCS)
    数组分割问题
    Trie树
    BitMap(比特位)
    KMP算法——字符串匹配
    排序算法
    概率问题
    【设计模式】——访问者模式
    【设计模式】——解释器模式
    【设计模式】——享元模式
  • 原文地址:https://www.cnblogs.com/zgq7/p/13602989.html
Copyright © 2011-2022 走看看