何时使用ThreadPoolExecutor而不是newThread()

时间:2014-10-14 01:23:56

标签: android threadpoolexecutor

我有一个真正很忙的http服务器,里面有很少的 HttpHandlers ,所有这些都是用新的Thread()开始他们的工作,因为我仍然无法胜任了解 ThreadPoolExecutor的用法(当你不需要的时候应该使用),我真的可以使用一点提示,我需要使用一个吗?

另外, threadPoolExecutor的最大线程还有什么屋顶?

同样适用于android,我不明白为什么我应该使用 ThreadPoolExecutor 而只是使用newThread()

3 个答案:

答案 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%并且大部分时间都会浪费在上下文切换中   (将线程与进出处理器交换进出处理器)   存储器)。