【发布时间】:2017-06-21 12:53:56
【问题描述】:
我有一个多线程应用程序,所以我实现了ExecutorService,池大小为 5 个线程
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 个线程)?
【问题讨论】:
-
你的问题对我来说没有意义。你能再澄清一点吗?
-
如果您觉得我的回答有帮助 - 您可以考虑接受吗?
-
不相关:这样的“空”循环:
while (!executor.isTerminated()) { }是危险的。你在这里做“热”的等待;这意味着 CPU 将 100% 旋转等待条件变为真 - 它会在几秒钟内对该方法进行数十亿次调用。你真的很想在循环体中加入一些“sleep(xxx)”调用! -
这更像是Websphere创建的60个线程和代码内部使用的5个线程之间存在什么样的关系。
-
我认为:没有关系。只是不同的线程对象,由不同的池管理。
标签: java multithreading threadpool executorservice pool