ThreadPoolExecutor,ForkJoinPool

ThreadPoolExecutor

	 corePoolSize 核心线程池大小
	 maximumPoolSize 线程池最大容量大小
	 keepAliveTime 线程池空闲时,线程存活的时间
	 TimeUnit 时间单位
	 ThreadFactory 线程工厂
	 BlockingQueue任务队列
	 RejectedExecutionHandler 线程拒绝策略

	 submit(Callable--run())  异步提交,有返回值,
	 execute(Runnable--call()) 异步提交,无返回值

	 invokeAll(Collection<? extends Callable<T>> tasks) 异步提交多组
	 			FutureTask  任务执行结果进行取消、查询是否完成、获取结果
	 			   get() 阻塞等待线程返回结果       
 			     
子任务调用run或者call会将任务存放到BlockingQueue等待线程消费

ForkJoinPool

submit(ForkJoinTask)  之类RecursiveTask 有返回结果  异步提交,有返回值,
execute(ForkJoinTask) 之类RecursiveAction 无返回结果 异步提交,无返回值
invoke(ForkJoinTask<T> task) 同步提交
      ForkJoinTask 
        fork 开启子任务 
        join 等待并获取任务结果
子任务调用fork会将任务存放到ForkJoinWorkerThread等待线程消费        

使用ForkJoinPool能够使用数量有限的线程来完成非常多的具有父子关系的任务,比如使用4个线程来完成超过200万个任务。但是,使用ThreadPoolExecutor时,是不可能完成的,因为ThreadPoolExecutor中的Thread无法选择优先执行子任务,需要完成200万个具有父子关系的任务时,也需要200万个线程,显然这是不可行的

https://www.cnblogs.com/congsg2016/p/5621746.html
https://blog.csdn.net/Holmofy/article/details/82714665
https://blog.csdn.net/dm_vincent/article/details/39505977

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值