在企业后端Java应用程序中,我有一个要求,即代码的某些部分调用各种API,它们彼此独立。收到回复后,我正在利用它们并将数据传递给请求者。
为此,我实现了基于可调用的多线程(使用Executor)。但是一位同事表示,实施多线程将使我的代码负责管理资源而不是Web App Container,这可能导致性能问题。
所以我想知道,在我的代码中实现多线程有什么影响?如何确保在不影响整体应用程序的情况下正确管理资源。
你的问题中有一些不同的aspectes混合在一起。不禁止在应用程序服务器上创建线程,因为它可能会导致执行问题。更重要的是服务器本身负责管理系统资源。生成服务器不知道的自己的线程无法由服务器管理。有关该主题的更多信息,请参阅this page。
使用平台提供的线程执行器是非常有效的,但仍可用于实现多线程。以See here为例。
多线程的另一个方面确实是性能。创建线程带有certain cost,创建太多可能会导致conext切换的开销。必须由开发人员采用pralellism和必须管理大量线程之间的权衡。这也是应用服务器再次管理自己的线程池的原因。