ForkJoinTask明确指出“可细分任务也不应执行阻塞输入/输出”。它的主要目标是“计算纯函数或在纯孤立对象上操作的计算任务”。我的问题是:-
在我的场景中,单个请求执行两种类型的工作,其中一种是加密,它将CPU核心在200毫秒内推到100%,第二种是很少的数据库调用。任何类型的静态分区,例如用于加密的6个线程和用于阻塞IO的2个线程,都不会提供CPU的最佳利用率。因此,拥有一个fork-join执行器,在总CPU计数上具有一定程度的线程数过度配置,再加上工作窃取,将确保更好地利用CPU资源。
我以上的假设和理解是否正确,如果不正确,请指出我的差距。
框架不限制任何类型的处理。不建议做阻塞等。几年前我写了一篇关于这个框架的评论,这是建议的重点。这是针对Java7版本的,但它仍然适用于Java8。
阻塞不是致命的,冲刺和播放阻塞,它们工作得很好。使用Java8时需要小心,因为有一个默认的公共分叉/连接池,并且在那里绑定线程可能会对其他用户产生影响。您始终可以使用额外的开销定义自己的f/j池,但至少您不会干扰其他人使用公共池。
您的场景看起来不错。您没有等待来自Internet的回复。试一试。如果您在延迟线程方面遇到困难,请查看ForkJoinPool。ManagedBlocker接口。使用该接口通知f/j池您正在进行阻塞调用,框架将创建补偿线程。
为什么设计ForkJoinTask来限制阻塞IO任务?
fork-join池的底层是共享的线程数量,如果这些线程上有一些IO工作阻塞,那么CPU密集型工作的线程就会更少。其他阻碍工作的人将挨饿。
如果我实现了阻塞IO任务,有什么困难?
通常,FJPool会根据处理器的数量分配线程。因此,如果必须在线程上使用IO阻塞,请确保为其他任务分配足够的线程。
您还可以在未与FJ池共享的专用线程上延迟您的IO工作。但是您调用阻塞
IO,您的线程阻塞并被安排用于其他任务,直到未阻塞
为什么Spring和play框架都充满了使用fork-连接执行器进行DB调用的示例?
play
没有什么不同。他们使用专用的池
来执行IO任务,因此其他任务不会受到影响。
ActiveX Data Objects (ADO) 是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术。可以使用 ADO 去编写紧凑简明的脚本以便连接到 Open Database Connectivity (ODBC) 兼容的数据库和 OLE DB 兼容的数据源。如果您是一个对数据库连接有一定了解的脚本编写人员,那么您将发现 ADO 命令语句并不复杂而且容易掌握。同样地,如果您是一
对许多Web应用程序而言,数据库都是其核心所在。数据库几乎可以用来存储你想查询和修改的任何信息,比如用户信息、产品目录或者新闻列表等。 Go没有内置的驱动支持任何的数据库,但是Go定义了database/sql接口,用户可以基于驱动接口开发相应数据库的驱动,5.1小节里面介绍Go设计的一些驱动,介绍Go是如何设计数据库驱动接口的。5.2至5.4小节介绍目前使用的比较多的一些关系型数据驱动以及如何使
程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大问题。如果我们自己来定义存储格式,比如保存一个班级所有学生的成绩单: 名字 成绩 Michael 99 Bob 85 Bart 59 Lisa 87 你可以用一个文本文件保存,一行保存一个学生,用,隔开
程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。 而如何定义数据的存储格式就是一个大问题。如果我们自己来定义存储格式,比如保存一个班级所有学生的成绩单: 名字 成绩 Michael 99 Bob 85 Bart 59 Lisa 87 你可以用一个文本文件保存,一行保存一个学生,用,隔开
任何人都知道如何在JDBC连接配置下参数化数据库URL。 数据库URL: jdbc: sqlserver://ovh-sql1:1433; Database aseName=user_1 JDBC驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver 我想参数化DatabaseName=user\u 1 正常参数化在此不起作用。请提出建议。
主要内容:ADO.Net对象模型,数据提供者,数据集(DataSet),连接到数据库,示例1,示例3应用程序与数据库进行通信,首先检索存储在数据库中的数据,并以便于用户使用的方式显示;其次,通过插入,修改和删除数据来更新数据库中的数据。 Microsoft ActiveX Data Objects.Net(ADO.Net)是一个模型,是.NET应用程序用于检索,访问和更新数据的.Net框架的一部分。 ADO.Net对象模型 ADO.Net对象模型不过是通过各种组件的结构化流程流程。对象模型可以描