这是一个大批量生产系统,但是,这种特殊的代码路径很少使用。它的导入功能可能导致大量数据进入,但它偶尔只会偶尔使用一次,或许每月几次。
与同事进行(礼貌)辩论。问题是一个简单的线程是否创建了旧式的方式:
Runnable thread = new Runnable() {
public void run() {
//... do the import work ...
};
}
new Thread(thread).start();
足够,或者如果这需要使用线程池。
这发生在从servlet调用的服务层类中(提供RESTful接口)。目的是允许响应返回并在导入时释放UI。
作为后续 - 在这种情况下,使用线程池实际上只会增加更多不必要的(编码和资源使用)开销?
在EJP的评论之后 - 是否有一个很好的指导方针,以确定它何时值得进行讨论'关于使用池而不是直线创建?
答案 0 :(得分:1)
如果你计划启动很多这些线程,线程池只会有用,然后通过重新使用它们来代替kill +重新创建它们以避免后续工作来避免线程创建开销。
由于很少使用此代码路径,因此您不需要线程池。
然而,听起来您在为REST API提供服务的同一过程中正在做这项繁重的工作?您可能需要考虑将此工作传递给在单独进程中运行的工作程序。