java 接口程序并发数要求500以上,用多线程,还是异步

zhangfengyi 2017-11-17 09:23:35
提供java 接口程序,要求并发数500,oracle 数据库select,insert,update这些操作,用多线程好,还是异步,有没有简单的程序供参考。
...全文
2619 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
捏造的信仰 2017-11-17
  • 打赏
  • 举报
回复
如果同时收到 500 个请求,需要有两层池化处理: 1、请求处理线程池,比如设为 300,那么应用服务器同时接收处理的请求为 300 个,剩下 200 个请求会暂时等待,直到线程池有空余。 2、数据库线程池,或数据库连接池,因为一个线程同一时间只会处理一个数据库连接,所以概念上是等同的。比如设为 50,那么同时进行的数据库操作为 50 个,剩下的数据库操作会暂时等待。 请求处理线程池不需要编码实现,而是对 Web 容器(例如 Tomcat)进行配置。具体如何配置请自行搜索。 数据库连接池大小通常在 DataSource 实例的属性中配置。
叮咚呛咚呛 2017-11-17
  • 打赏
  • 举报
回复
看你服务器性能的 同时也看请求的资源 至于多线程和异步 说实话 与这个并发无关 每个请求都会消耗服务器资源,解决方法 分布式 分库 分表 。。。。
yql1986 2017-11-17
  • 打赏
  • 举报
回复 3
并发数要求500以上 用多线程好,还是异步? --------------------------------------------------------------------------------------------- 一提到并发就是多线程。。。 你对并发没有理解清楚。并发实际上跟多线程、异步关系不大 我假设你的应用程序是WEB应用程序,并发数大于500,假设有501人同一时刻都在访问你的应用程序某一接口,即在这一瞬间 tomcat 同时接收到500个请求 从而会 new出500个线程 执行该接口中的代码,以响应请求。即执行的时间窗口有重叠,这就是并发。 因为这501请求都在访问这个接口,能不能抗住这501个并发,就要考虑在这个接口中做了哪些事性? 比如访问数据库 就要确保数据库 能支持瞬间 501个连接,如若不支持,假设只支持瞬间打开100个连接,那么就要确保在这个接口跟这个数据库操作在短时间内就内完成 这样一来就可以快速释放连接到数据库连接池中。 能不能抗住这501个并发,就要看你的应用程的资源足不足以应对,因为应用程序这一时间可能还由其它人在访问其它接口,进行其它操作都 要消耗资源。跟多线程、异步没有啥直接关系。 如果这501个并发,请求的接口中非常消耗资源,系统支持有限,可以对访问的资源设置某一阈值,当超过这个阈值时 将这些请求加入队列,再针对这个队列异步处理。 可以在你的接口中加入多线程、异步等操作,用于快速响应请求。 并发要根据的你实际情况来,跟多线程、异步关系不大。如果应用只部署一台机器你就是用再多个线程也没有用,系统本身就这支持这么 多线程,数据库也只支持这么多连接。 可以考虑多机部署,把应用程序需要的资源扩大。如果你用多线程、异步等操作,能快速响应请求,这样一来500多个并发同时到来时,有一部分请求 被迅速处理掉,在处理剩下的.... 多线程、异步等操作,能快速响应请求 提高吞吐量 系统也能抗得住。 希望对你有帮助,要根据你的实际情况来

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧