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