单个线程上的多个Runnable与一个for循环的runnable相比

时间:2013-11-07 22:57:39

标签: java android multithreading concurrency

我有一个执行者,允许消费者决定池的大小。但是如果消费者选择1,那么我最终会在一个线程中运行一些Runnables。所以问题是:让一个可运行的循环中的一堆服务器调用更好吗?或者每次通话都可以运行吗?我的问题是帮助评估我是否应该在用户将池大小设置为1时提出特殊情况。

1 个答案:

答案 0 :(得分:0)

  

我的问题是帮助评估我是否应该在用户将池大小设置为1时提出特殊情况。

如果池大小为1,做一些特别的事情可能会更好,以使您的代码更加一致。在效率方面,具有多个Runnable s可能效率较低,但与服务器调用相比可能是桶中的下降。因此,您应该投票支持更好的代码一致性,而不是过早优化。

为了确保,始终建议您使用ExecutorService类来构建线程池。

// create a thread pool with some number of workers chosen by the user
ExecutorService threadPool = Executors.newFixedThreadPool(numThreadsInPool);
for (MyRunnable job : runnablesToDo) {
   threadPool.submit(job);
}
// once we have submitted all jobs to the thread pool, it should be shutdown
threadPool.shutdown();