Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单线程上的多个可运行项与for循环中的一个可运行项_Java_Android_Multithreading_Concurrency - Fatal编程技术网

Java 单线程上的多个可运行项与for循环中的一个可运行项

Java 单线程上的多个可运行项与for循环中的一个可运行项,java,android,multithreading,concurrency,Java,Android,Multithreading,Concurrency,我有一个执行器,允许消费者决定池的大小。但如果消费者选择1,那么我最终会在一个线程中运行多个Runnable。所以问题是:让一个可运行的服务器在一个循环中进行一系列服务器调用是否更好?还是让每次通话都能运行更好?我的问题是帮助评估当用户将池大小设置为1时,我是否应该提供一个特例 我的问题是帮助评估当用户将池大小设置为1时,我是否应该提供一个特例 如果池大小为1,则最好不要执行特殊操作,以使代码更加一致。就效率而言,拥有大量的Runnables可能效率较低,但与服务器调用相比可能只是杯水车薪。因此

我有一个执行器,允许消费者决定池的大小。但如果消费者选择1,那么我最终会在一个线程中运行多个Runnable。所以问题是:让一个可运行的服务器在一个循环中进行一系列服务器调用是否更好?还是让每次通话都能运行更好?我的问题是帮助评估当用户将池大小设置为1时,我是否应该提供一个特例

我的问题是帮助评估当用户将池大小设置为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();