社区
Java SE
帖子详情
java 接口程序并发数要求500以上,用多线程,还是异步
zhangfengyi
2017-11-17 09:23:35
提供java 接口程序,要求并发数500,oracle 数据库select,insert,update这些操作,用多线程好,还是异步,有没有简单的程序供参考。
...全文
2875
3
打赏
收藏
java 接口程序并发数要求500以上,用多线程,还是异步
提供java 接口程序,要求并发数500,oracle 数据库select,insert,update这些操作,用多线程好,还是异步,有没有简单的程序供参考。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
捏造的信仰
2017-11-17
打赏
举报
回复
如果同时收到 500 个请求,需要有两层池化处理: 1、请求处理线程池,比如设为 300,那么应用服务器同时接收处理的请求为 300 个,剩下 200 个请求会暂时等待,直到线程池有空余。 2、数据库线程池,或数据库连接池,因为一个线程同一时间只会处理一个数据库连接,所以概念上是等同的。比如设为 50,那么同时进行的数据库操作为 50 个,剩下的数据库操作会暂时等待。 请求处理线程池不需要编码实现,而是对 Web 容器(例如 Tomcat)进行配置。具体如何配置请自行搜索。 数据库连接池大小通常在 DataSource 实例的属性中配置。
叮咚呛咚呛
2017-11-17
打赏
举报
回复
看你服务器性能的 同时也看请求的资源 至于多线程和异步 说实话 与这个并发无关 每个请求都会消耗服务器资源,解决方法 分布式 分库 分表 。。。。
yql1986
2017-11-17
打赏
举报
回复
4
并发数要求500以上 用多线程好,还是异步? --------------------------------------------------------------------------------------------- 一提到并发就是多线程。。。 你对并发没有理解清楚。并发实际上跟多线程、异步关系不大 我假设你的应用程序是WEB应用程序,并发数大于500,假设有501人同一时刻都在访问你的应用程序某一接口,即在这一瞬间 tomcat 同时接收到500个请求 从而会 new出500个线程 执行该接口中的代码,以响应请求。即执行的时间窗口有重叠,这就是并发。 因为这501请求都在访问这个接口,能不能抗住这501个并发,就要考虑在这个接口中做了哪些事性? 比如访问数据库 就要确保数据库 能支持瞬间 501个连接,如若不支持,假设只支持瞬间打开100个连接,那么就要确保在这个接口跟这个数据库操作在短时间内就内完成 这样一来就可以快速释放连接到数据库连接池中。 能不能抗住这501个并发,就要看你的应用程的资源足不足以应对,因为应用程序这一时间可能还由其它人在访问其它接口,进行其它操作都 要消耗资源。跟多线程、异步没有啥直接关系。 如果这501个并发,请求的接口中非常消耗资源,系统支持有限,可以对访问的资源设置某一阈值,当超过这个阈值时 将这些请求加入队列,再针对这个队列异步处理。 可以在你的接口中加入多线程、异步等操作,用于快速响应请求。 并发要根据的你实际情况来,跟多线程、异步关系不大。如果应用只部署一台机器你就是用再多个线程也没有用,系统本身就这支持这么 多线程,数据库也只支持这么多连接。 可以考虑多机部署,把应用程序需要的资源扩大。如果你用多线程、异步等操作,能快速响应请求,这样一来500多个并发同时到来时,有一部分请求 被迅速处理掉,在处理剩下的.... 多线程、异步等操作,能快速响应请求 提高吞吐量 系统也能抗得住。 希望对你有帮助,要根据你的实际情况来
java
代码实现
异步
返回结果如何判断
异步
执行完成
通过使用Future和,我们可以方便地判断
Java
代码中
异步
操作的执行是否完成。这样,我们就可以在
异步
操作完成后获取结果,并且继续进行后续的操作。这种方式提高了代码的响应性和性能,使我们能够更好地处理
并发
和
异步
任务。
多线程
与
并发
-
Java
8 CompletableFuture
异步
多线程
CompletableFuture的get()方法是阻塞的,我们一般建议使用future.get(5, TimeUnit.SECONDS)。并且一般建议使用自定义线程池。但是如果线程池拒绝策略是DiscardPolicy或者DiscardOldestPolicy,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,CompletableFuture线程池策略最好使用AbortPolicy,然后耗时的
异步
线程,做好线程池隔离哈。
JAVA
多线程
编程之
异步
日常开发中我们在一个
接口
中需要处理多个任务,通常都是串行的,这样导致
接口
的响应时间是每个任务的执行时间的总和。为了缩短响应时间,通常会使用
异步
处理多任务。 需求举例:查询书籍基本信息,书籍详细信息,作者信息并将结果
数
据返回。 假设查询书籍基本信息花费
500
毫秒,查询书籍详细信息花费
500
毫秒,查询作者信息花费
500
毫秒,共计1
500
毫秒,使用
异步
处理时间一般都是远小于1
500
毫秒的。 下面使用
异步
调用方式优化
接口
1、
异步
任务类 实现 Callable
接口
,用来处理带返回结果的任务。taskId 用来.
Springboot中开启
多线程
,实现
异步
非阻塞、
异步
阻塞、有无返回值的场景
开启
多线程
异步
的方式有很多种,不单单局限以上方式,感兴趣的可以自行研究测试下,比如还可以使用来开启
多线程
,然后分别使用对应的execute()和submit()方法实现无返回值和有返回值的效果;以上内容均为个人理解,如存在不当欢迎提出改进。
Java
避坑案例 -
接口
设计_明确
接口
的处理方式:同步 vs
异步
使用方可以根据业务性质选择合适的方法:如果是后端批处理使用,那么可以使用同步上传,多等待一些时间问题不大;如果是面向用户的
接口
,那么
接口
响应时间不宜过长,可以调用
异步
上传
接口
,然后定时轮询上传结果,拿到结果再显示经过改造的同步上传
接口
syncUpload,用户可以等待上传完成。
异步
上传
接口
,快速返回任务 ID,客户端可轮询查询上传结果。这样的设计使得
接口
行为清晰、可预测,便于用户根据需求选择合适的处理方式。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章