我刚刚开始练习使用线程池。我正在用 Java 创建一个服务器客户端银行应用程序,我浏览了一些 Oracle 文档,并且正在考虑使用缓存线程池。但我运行了一些计数测试,似乎固定线程池更快。缓存的线程池滞后,并且似乎创建了太多不必要的线程。 (或者也许我在这里做错了什么)。
我的问题是,在现实世界的情况下,哪个会更有效?或者是否有其他类型的池会更有效。
另外,在我的计数测试中我有几行:
ExecutorService executor = Executors.newCachedThreadPool();
for (int i = 0; i < 500; i++) {
Runnable worker = new serv(10000000L + i);
executor.execute(worker);
}
在上面的行中,未使用的线程是否会自动重用(而不是创建新线程),或者是否需要添加其他内容以确保发生这种情况?
最佳答案
Executors.newCachedThreadPool() API中有解释
六十秒内未使用的线程将被终止并从缓存中删除。因此,保持空闲足够长的时间的池将不会消耗任何资源。
关于Java:我应该在这里使用什么样的ThreadPool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16493671/