知识点复习14.1 ForkJoinPool

 

1. 什么是ForkJoinPool
  ForkJoinPool是JDK7引入的线程池,核心思想是将大的任务拆分成多个小任务(即fork),然后在将多个小任务处理汇总到一个结果上(即join),非常像MapReduce处理原理。同时,它提供基本的线程池功能,支持设置最大并发线程数,支持任务排队,支持线程池停止,支持线程池使用情况监控,也是AbstractExecutorService的子类,主要引入了“工作窃取”机制,在多CPU计算机上处理性能更佳。

可以设置最大并发线程数,大的任务拆分成多的小任务

1.1 work-stealing(工作窃取算法)
  work-stealing(工作窃取),ForkJoinPool提供了一个更有效的利用线程的机制,当ThreadPoolExecutor还在用单个队列存放任务时,ForkJoinPool已经分配了与线程数相等的队列,当有任务加入线程池时,会被平均分配到对应的队列上,各线程进行正常工作,当有线程提前完成时,会从队列的末端“窃取”其他线程未执行完的任务,当任务量特别大时,CPU多的计算机会表现出更好的性能。

 ForkJoinPool :ForkJoinTask需要通过ForkJoinPool来执行,任务分割出的子任务会添加到当前工作线程所维护的双端队列中,进入队列的头部。当一个工作线程的队列里暂时没有任务时,它会随机从其他工作线程的队列的尾部获取一个任务。
  线程池监控
  在线程池使用监控方面,主要通过如下方法:
  isTerminated—判断线程池对应的workQueue中是否有待执行任务未执行完;
  awaitTermination—判断线程池是否在约定时间内完成,并返回完成状态;
  getQueuedSubmissionCount—获取所有待执行的任务数;
  getRunningThreadCount—获取正在运行的任务数。
4. java8 ParallelStreams
  Java 8为ForkJoinPool添加了一个通用线程池,这个线程池用来处理那些没有被显式提交到任何线程池的任务。它是ForkJoinPool类型上的一个静态元素,它拥有的默认线程数量等于运行计算机上的处理器数量。当调用Arrays类上添加的新方法时,自动并行化就会发生。比如用来排序一个数组的并行快速排序,用来对一个数组中的元素进行并行遍历。自动并行化也被运用在Java 8新添加的Stream API中。

ForkJoinPool是ExecutorService的实现类,因此是一种特殊的线程池。

使用方法:创建了ForkJoinPool实例之后,就可以调用ForkJoinPool的submit(ForkJoinTask<T> task) 或invoke(ForkJoinTask<T> task)方法来执行指定任务了。

其中ForkJoinTask代表一个可以并行、合并的任务。ForkJoinTask是一个抽象类,它还有两个抽象子类&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL 14.1是一种开源数据库管理系统,是由PostgreSQL全球开源社区开发和维护的最新版本。它是一个功能强大且可扩展的关系型数据库,具有广泛的应用领域和用途。 PostgreSQL 14.1带来了许多新的功能和改进,使得它在性能、安全性和可靠性方面更加优秀。首先,它引入了更强大的分区功能,这使得用户可以更好地管理和查询大量数据,提高查询性能。它还引入了增强的并行查询功能,可以更有效地利用多核处理器的性能,提高查询吞吐量。 在安全性方面,PostgreSQL 14.1引入了更多的身份验证和加密功能,包括对身份验证方法和加密算法的更新。这提高了数据库的安全性,保护用户数据免受未经授权的访问和攻击。 另外,PostgreSQL 14.1还改进了查询优化器,使得查询执行更加高效。它还改进了并发控制机制,使得多个用户可以同时对数据库进行读写操作,而不会导致数据一致性问题。 除此之外,PostgreSQL 14.1还提供了许多其他的改进,包括JSON数据类型的新功能,更好的存储管理和备份恢复功能,以及对各种数据类型和函数的增强支持。 总的来说,PostgreSQL 14.1是一种强大而可靠的数据库管理系统,具有许多新功能和改进。它适用于各种应用场景,包括大型企业级应用和个人开发者的小型项目。无论是在性能、安全性还是功能方面,它都是一个可靠的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值