java submit execute_线程池submit和execute区别有哪些?

小伙伴们知道线程池submit和execute的区别都有哪些嘛?它们都是java线程池中较常用的,下面就让我们一起来看看它们有哪些区别吧。

一、返回值类别

submit()方法可以提供Future < T > 类型的返回值。

executor()方法没有返回值。

execute无返回值public void execute(Runnable command)

{

if (command == null)

throw new NullPointerException(); //抛掉异常

int c = ctl.get();

if (workerCountOf(c) 

{

if (addWorker(command, true))

return;

c = ctl.get();

}

if (isRunning(c) && workQueue.offer(command))

{

int recheck = ctl.get();

if (!isRunning(recheck) && remove(command))

reject(command);

else if (workerCountOf(recheck) == 0)

addWorker(null, false);

}

else if (!addWorker(command, false))

reject(command);

}

submit有Future返回值 :/**

* @throws RejectedExecutionException {@inheritDoc}

* @throws NullPointerException       {@inheritDoc}

*/

public Future  submit(Runnable task)

{

if (task == null) throw new NullPointerException();

RunnableFuture  ftask = newTaskFor(task, null);

execute(ftask);

return ftask;

}

/**

* @throws RejectedExecutionException {@inheritDoc}

* @throws NullPointerException       {@inheritDoc}

*/

public  Future  submit(Runnable task, T result)

{

if (task == null) throw new NullPointerException();

RunnableFuture  ftask = newTaskFor(task, result);

execute(ftask);

return ftask;

}

/**

* @throws RejectedExecutionException {@inheritDoc}

* @throws NullPointerException       {@inheritDoc}

*/

public  Future  submit(Callable  task)

{

if (task == null) throw new NullPointerException();

RunnableFuture  ftask = newTaskFor(task);

execute(ftask);

return ftask;

}

二、异常类别

excute方法会抛出异常。

sumbit方法不会抛出异常。除非调用Future.get()方法。

三、入参类别

excute入参Runnable

submit入参可以为Callable,也可以为Runnable。public interface Executor

{

void execute(Runnable command);

}public interface ExecutorService extends Executor

{

...

 Future submit(Callable task);

 Future submit(Runnable task, T result);

Future> submit(Runnable task);

...

}

以上就是关于submit和execute的之间区别的所有内容了,关于它们的更多相关java常见问答知识请关注我们来了解详情吧。

推荐阅读:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值