繁体   English   中英

Java计时器和可伸缩性

[英]Java timer and scalability

我通过网上帖子仔细地搜索了一下,但令人满意地回答了我有两个问题。

  1. 如何在Java循环中执行计时器
  2. 一个jvm实例可以处理多少个线程

因此,在上述两个问题的上下文中,很明显(没有太多修改)具有4GB RAM的jvm将处理低于10k线程的问题。 关于异步事件框架的所有这些东西,在线程的数据在其他线程之间不是非常重要的情况下是可以的。 但是,如果计时器线程(循环内)中的数据对其他10k请求/秒很重要,该怎么办?

我能想到的现实生活情况是在线问卷。 假设您有5个问卷。 每个问卷有10个问题。 您预计每个问卷将有20000名受访者。 所有调查表都是同时开始的。 每个问题都需要一分钟才能显示另一个问题(例如,因为您要确保客观性)

这意味着,如果每个响应者之间的间隔间隔为1/20秒,则每秒必须至少处理20000个线程。 这是因为每个请求必须将其数据保持一秒钟以上才能使用下一个请求。

在相同背景下,您将如何扩展到说10万个用户? 如果不清楚,请提出,以便我澄清。

避免使用每任务线程执行模型,因为它的扩展性不好。

您可以改用ScheduledThreadPoolExecutor

通常,我建议您对标准库进行全面介绍,以便您知道可用的工具,而不是尝试从头开始构建所有工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM