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