多线程ExecutorService中submit和execute区别

标签: ExecutorService submit execute 多线程
7人阅读 评论(0) 收藏 举报
分类:
  • 介绍

    submit和execute都是 ExecutorService 的方法,都是添加线程到线程池中。

  • 区别 
    submit 有返回值 返回future , execute没有

  • submit 返回值 future 用处 
    可以执行cancle方法,取消执行 
    可以通过get()方法,判断是否执行成功 ==null表示执行成功

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadPoolDemo
{

    class ThreadDemo implements Runnable
    {

        public void run()
        {
            System.err.println("hello world");
        }

    }

    public static void main(String[] args)
    {
        //如果希望在服务器上使用线程池,强烈建议用newFixedThreadPool方法创建线程池,这样能获得更好的性能。
        ExecutorService executorService = Executors.newFixedThreadPool(2);

        ThreadPoolDemo threadPoolDemo = new ThreadPoolDemo();
        for (int i = 0; i < 5; i++)
        {
            ThreadDemo threadDemo = threadPoolDemo.new ThreadDemo();
            Future future = executorService.submit(threadDemo);

            // 可以取消执行
            future.cancel(true);

            // 可以获取返回结果,如果future.get()!=null 且无异常,表示执行成功
            try
            {
                if (future.get() == null) System.out.println("执行完成");
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            catch (ExecutionException e)
            {
                e.printStackTrace();
            }
        }
    }
}
查看评论

Java ExecutorService中execute()和submit()方法的区别

方法execute()没有返回值,而submit()方法可以有返回值(通过Callable和Future接口) 方法execute()在默认情况下异常直接抛出(即打印堆栈信息),不能捕获,但是可以通过...
  • Q_AN1314
  • Q_AN1314
  • 2016-09-08 10:23:47
  • 3123

ExecutorService的execute和submit方法区别

主要有三个区别:         1、接收的参数不一样,ExecutorService的submit(CallableT> task)参数是一个Callable对象;executorService...
  • zmx729618
  • zmx729618
  • 2016-05-18 09:38:26
  • 2051

ExecutorService的execute和submit方法的区别

因为之前一直是用的execute方法,最近有个情况需要用到submit方法,所以研究了下。 三个区别: 1、接收的参数不一样 2、submit有返回值,而execute没...
  • Buaaroid
  • Buaaroid
  • 2015-08-25 11:26:32
  • 941

ExecutorService的execute和submit方法

  • 2013年11月12日 23:22
  • 237KB
  • 下载

java并发编程(ExecutorService中的submit方法)详解

submit( ):该方法接收Runnable或Callable对象作为输入参数(该方法输入参数请参考上篇文章java线程池任务提交(Runnable、Callable、FutureTask), 这...
  • qq_26963495
  • qq_26963495
  • 2018-01-09 17:57:00
  • 288

ExecutorService中submit和execute的区别、Callable 的用法

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中...
  • JackieLiuLixi
  • JackieLiuLixi
  • 2014-07-10 16:30:40
  • 1533

submit与execute区别

(1)可以接受的任务类型                submit:                               execute:                        ...
  • cpf2016
  • cpf2016
  • 2015-12-02 22:18:27
  • 3821

线程池的submit和execute的区别

多线程里面还有一个比较有意思的地方就是往线程池中提交线程的时候其实有两种方法 一种是execute另外一种是submit 1. execute提交的方式 execute提交的方式只能提交一个Ru...
  • guhong5153
  • guhong5153
  • 2017-05-05 23:52:42
  • 865

一心多用多线程-细谈java线程池submit与execute的区别

深夜学习,发现ThreadPoolExecutor里面一个小知识点,故开热点连wifi怒写submit与execute方法的区别。1.问题的来源在看书的时候,涉及到java线程池问题的时候常常面临这样...
  • hayre
  • hayre
  • 2016-11-24 01:56:28
  • 10327

多线程实战(三)——concurrent.ExecutorService中execute()和submit()的区别

好不容易找到一个靠谱的总结,其它帖子真的是大段复制粘贴。 原帖地址:http://blog.csdn.net/q_an1314/article/details/52468518 1、方法execute...
  • qq_28885149
  • qq_28885149
  • 2016-10-24 11:43:48
  • 177
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1087
    排名: 4万+