在 Java 中,execute 和 submit 都是提交任务的方法,它们有何区别呢?
execute 方法是 Executor 框架的核心方法之一,它用来提交一个 Runnable 对象以便在将来的某个时间执行它。这个方法并不会返回任务的执行结果,也不会等待任务的结束。如果需要得到任务的返回结果或者等待任务的结束,需要使用 submit 方法。
public void execute(Runnable command) { if (command == null) throw new NullPointerException(); // ...... }
submit 方法也是提交任务的方法,不同的是它返回了一个 Future 对象,这个对象可以用来判断任务是否已经完成,并且可以获取到任务执行的结果。与 execute 不同,submit 方法会阻塞等待任务结束后再返回。
publicFuture submit(Runnable task, T result) { // ...... }
除了返回值不同,execute 和 submit 的本质区别还在于线程池对待任务的方式。execute 方法只是提交任务,如果线程池已经满了,这个任务就会被抛弃。而 submit 方法则会将任务放入一个队列中,等待线程池中的线程来执行。
综上所述,execute 和 submit 方法有着不同的用途和返回值。执行任务时需要根据实际情况来选择使用哪种方法。