这里需要多线程:更多学生提交他们的回复以存储在数据库中

Multi-threading necessary here : More students submitting their response to store in database

我正在开发学生响应系统。在我的申请中,多名学生(超过 500 人)同时参加测验并通过 servlet 提交他们的回复。

参加测验:

全局对象包含测验详细信息(问题,选项),所有学生向servlet发送请求以收集测验数据。

正在提交回复:

学生当前通过servlet 提交响应,它将收集响应(Json) 并存储在数据库中。

在上述场景中我没有使用多线程。这里有必要使用多线程吗?

如果我将代码转换为多线程,是否会使程序更有效?

如果我使用 RESTful API 收集数据并将该数据存储在 class 而不是 Servlet 中怎么办? (如果所有学生都通过 REST 技术提交响应,而不是使用 servlet。REST API 技术本身会像 servlet 一样处理多线程吗?)

如果您使用的是 servlet,则该 servlet 在 servlet 容器中执行(例如 Tomcat)。 Tomcat 为您管理线程,对于每个 HTTP 请求 Tomcat 从其池中获取一个线程并在其上运行请求。所以你的 servlet 已经在使用多线程了。

您可以做一些事情来改进程序。如果您不使用连接池,那么使用连接池将是一个很大的改进。如果没有连接池,所有线程都必须轮流访问同一个连接,有了连接池,可以同时完成更多工作。 (另外使用连接池使应用程序更能容忍网络问题和数据库可用性问题。)

还要确保您的 servlet 没有保持任何状态并且没有同步方法。如果有需要保留的用户信息,请将其保留在 HTTP 会话中。

这些步骤是为了最大限度地减少您的线程因等待另一个线程持有的锁而被阻塞的情况,以便您的多个线程做更多的工作,减少等待。

记住 REST 是一种架构风格,而不是框架。你没有说你打算使用什么特定的框架,但在我看来,框架的设计者似乎不太可能做出破坏使用该框架的应用程序的并发性的决定。您的并发性更有可能因不合并连接和使用过多同步而受到限制。