我有一个真正很忙的http服务器,里面有很少的 HttpHandlers ,所有这些都是用新的Thread()
开始他们的工作,因为我仍然无法胜任了解 ThreadPoolExecutor的用法(当你不需要的时候应该使用),我真的可以使用一点提示,我需要使用一个吗?
另外, threadPoolExecutor的最大线程还有什么屋顶?
同样适用于android,我不明白为什么我应该使用 ThreadPoolExecutor 而只是使用newThread()
?
答案 0 :(得分:0)
基本上ThreadPoolExecutor只是java中的高级API,可以在多线程中执行任务而无需处理低级API(手动创建线程)
对于一个小例子,ExecutorService executor = Executors.newFixedThreadPool(5);
将运行您在8个主题中提交的任务。
您可以通过阅读本文档尝试更多地了解它。
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html
和本教程
http://tutorials.jenkov.com/java-util-concurrent/threadpoolexecutor.html
答案 1 :(得分:0)
如果您不知道将ThreadPoolExecutor
被调用多少次,那么您必须使用new Thread()
,因为如果您无限制地拨打new Thread()
您将遇到麻烦,您的资源有限内存不足异常。在像android一样的受限制的世界中,有必要知道你创建线程的次数,如果它不能控制你,例如你的用户输入决定了线程的创建,你必须使用ThreadPoolExecutor
。
答案 2 :(得分:0)
创建和销毁线程的CPU使用率很高,因此在您需要时 同时执行许多小而简单的任务的开销 创建自己的线程可占用CPU的很大一部分 周期并严重影响最终响应时间。这是特别的 在执行多个线程的压力条件下可以推送 CPU到100%并且大部分时间都会浪费在上下文切换中 (将线程与进出处理器交换进出处理器) 存储器)。