Java中Submit()和execute()方法之间的区别

Submit()与execute()Java中的方法

在这里,我们将看到Java中的方法有何submit()不同execute()

Submit()方法

  • 此方法在java.util.concurrent包中可用。

  • Submit()方法用于将任务提交到ThreadPool。

  • 此方法是重载方法。

  • Submit()方法接受Runnable或Callable任务(即,该方法仅接受一个参数,即Runnable或Callable)。

  • Submit()是ExecutorService接口的静态方法,因此也可以使用类名访问此方法。

  • 此方法的返回类型是Future对象,因此它返回包含未决结果计算的Future类型对象。

  • ExecutorService接口是Executor的子接口。

  • 下面给出了commit()方法的语法:

    Future f_obj = ExecutorService_obj . submit(new Runnable(){});
    Future f_obj = ExecutorService_obj . submit(new Callable(){});
  • 如果我们要计算大量计算,例如计算pie的值等并返回计算结果,则应该使用Submit()

示例:Submit()接受可运行任务

//Java程序演示submit()方法的行为 
//ExecutorService接口 

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

public class SubmitATaskBySubmitMethod {
    public static void main(String[] args) throws Exception {
        //允许ThreadPool中的一个线程
        ExecutorService exe_ser = Executors.newFixedThreadPool(1);

        //通过使用submit()我们接受Runnable任务
        Future f = exe_ser.submit(new Runnable() {
            //覆盖run()方法,并将在其中定义一个作业
            public void run() {
                System.out.println("Submitting a task by using submit() method");
            }
        });

        //如果任务完美完成,此方法将返回null- 
        //(即没有任何错误)
        System.out.println(f.get());
    }
}

输出结果

Submitting a task by using submit() method
null

示例:Submit()接受可调用任务

//Java程序演示submit()方法的行为 
//ExecutorService接口 

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

public class SubmitATaskBySubmitMethod {
    public static void main(String[] args) throws Exception {
        //允许ThreadPool中的一个线程
        ExecutorService exe_ser = Executors.newFixedThreadPool(1);

        //通过使用submit()我们接受Callable任务
        Future f = exe_ser.submit(new Callable() {
            //覆盖call()方法,并将在其中定义一个作业
            public Object call() {
                System.out.println("Submitting a Callable task by using submit() method");
                return "Callable Task";
            }
        });

        //如果任务完美完成,此方法将返回null- 
        //(即没有任何错误)
        System.out.println(f.get());
    }
}

输出结果

Submitting a Callable task by using submit() method
Callable Task