草庐IT

concurrentExecutions

全部标签

java - 在嵌套的 Java 8 并行流操作中使用信号量可能会死锁。这是一个错误吗?

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

java - 在嵌套的 Java 8 并行流操作中使用信号量可能会死锁。这是一个错误吗?

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