Java:什么时候使用线程池的指南?

时间:2015-05-12 01:37:48

标签: java multithreading threadpool

这是一个大批量生产系统,但是,这种特殊的代码路径很少使用。它的导入功能可能导致大量数据进入,但它偶尔只会偶尔使用一次,或许每月几次。

与同事进行(礼貌)辩论。问题是一个简单的线程是否创建了旧式的方式:

Runnable thread = new Runnable() {
  public void run() {
    //... do the import work ...
  };
}
new Thread(thread).start();

足够,或者如果这需要使用线程池。

这发生在从servlet调用的服务层类中(提供RESTful接口)。目的是允许响应返回并在导入时释放UI。

作为后续 - 在这种情况下,使用线程池实际上只会增加更多不必要的(编码和资源使用)开销?

在EJP的评论之后 - 是否有一个很好的指导方针,以确定它何时值得进行讨论'关于使用池而不是直线创建?

1 个答案:

答案 0 :(得分:1)

如果你计划启动很多这些线程,线程池只会有用,然后通过重新使用它们来代替kill +重新创建它们以避免后续工作来避免线程创建开销。

由于很少使用此代码路径,因此您不需要线程池。

然而,听起来您在为REST API提供服务的同一过程中正在做这项繁重的工作?您可能需要考虑将此工作传递给在单独进程中运行的工作程序。

相关问题