网络圈中的多线程



我有一个多线程应用程序,所以我实现了池大小为 5 个线程的ExecutorService

public class SimpleThreadPool {    
    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(5);
        for (int i = 0; i < 10; i++) {
          Runnable worker = new WorkerThread("" + i);
          executor.execute(worker);
        }
        executor.shutdown();
        while (!executor.isTerminated()) {
        }
        System.out.println("Finished all threads");
    }
}

应用程序将部署在 Websphere Web 服务器中,其设置包含线程池配置:应用程序服务器>>线程池>缺省值,最大大小设置为 60。

我的问题是,采用哪种池大小配置,Websphere 中的配置是否覆盖了代码中的配置(5 个线程(?

这两

件事彼此无关。

服务器

设置与服务器使用的线程有关。请参阅文档:

使用此页面来配置应用程序服务器使用的一组线程。请求通过任何 HTTP 传输发送到服务器。线程池使服务器的组件能够重用线程,从而消除了在运行时创建新线程的需要。创建新线程会花费时间和资源。

现在,应用程序代码将创建自己的独立线程池。

这与该系统池无关

当然,您的应用程序可能会将"任务"发送到该系统线程池;以这种方式使用它。

不,这些将是不同的线程池。

具有 60 个线程的线程需要通过 jndi 服务按名称进行处理。Websphere 线程池有点不同。例如,它支持 JTA(分布式(事务。您只能在这些特殊线程池中使用 JTA 事务。

本地的将有 5 个线程,并且不受 Websphere 的任何影响。您可以通过提交大量任务,然后通过 jstackkill -3 命令打印线程堆栈来检查线程数。

相关内容

  • 没有找到相关文章

最新更新