考虑以下情况:我们正在使用Java8并行流来执行并行forEach循环,例如,IntStream.range(0,20).parallel().forEach(i->{/*workdonehere*/})并行线程的数量由系统属性“java.util.concurrent.ForkJoinPool.common.parallelism”控制,通常等于处理器的数量。现在假设我们希望限制特定工作的并行执行次数-例如因为那部分是内存密集型的,而且内存限制意味着并行执行的限制。一种明显而优雅的限制并行执行的方法是使用信号量(建议here),例如,以下代码将并行执行的数量限制为5:finalSem
考虑以下情况:我们正在使用Java8并行流来执行并行forEach循环,例如,IntStream.range(0,20).parallel().forEach(i->{/*workdonehere*/})并行线程的数量由系统属性“java.util.concurrent.ForkJoinPool.common.parallelism”控制,通常等于处理器的数量。现在假设我们希望限制特定工作的并行执行次数-例如因为那部分是内存密集型的,而且内存限制意味着并行执行的限制。一种明显而优雅的限制并行执行的方法是使用信号量(建议here),例如,以下代码将并行执行的数量限制为5:finalSem