jjzjj

forkJoinPool

全部标签

java - ForkJoinPool 和 Future.Get

假设我有一个并行度为n的ForkJoinPool设置,并且我这样调用并行计算:workpool.submit(()->{objects.values().parallelStream().forEach(obj->{obj.foo();});});我这样做是为了确保在那里生成的线程是在工作池中创建的(我有不同的系统组件需要隔离)。现在假设调用它的线程也在这个工作池中执行,我这样做:Futurewait=workpool.submit(()->{objects.values().parallelStream().forEach(obj->{obj.foo();});});wait.get

java - 分而治之的基本情况下的迭代 Fork-Join

我有一个递归分而治之算法,它在开始划分之前需要两个计算密集型基本案例任务。最初的基本案例是独立的任务,所以我想并行执行它们。在基本情况之后,划分运行具有0和1之间不同输入的相同任务,并根据输出决定是否再次划分。我通过创建一个伪造递归的任务包装器对象来使基本情况起作用,但这感觉像是一个杂乱无章的问题,如下所示:publicstaticvoiddoSomething(){ForkJoinPoolpool=newForkJoinPool();privateArrayListal=newArrayList();TaskWrappertw=newTaskWrapper(true,-1);al.a

java - 为什么 ForkJoinPool::invoke() 会阻塞主线程?

免责声明:这是我第一次使用Java的Fork-Join框架,所以我不能100%确定我是否正确使用了它。Java也不是我的主要编程语言,所以这也可能是相关的。给定以下SSCCE:importjava.util.Arrays;importjava.util.Timer;importjava.util.TimerTask;importjava.util.concurrent.ForkJoinPool;importjava.util.concurrent.ForkJoinTask;importjava.util.concurrent.RecursiveAction;classForkCalcu

java - 如何在 CompletableFuture.supplyAsync(Supplier<U> supplier) 方法中使用所需数量的工作线程设置 ForkJoinPool?

根据甲骨文,staticCompletableFuturesupplyAsync(Suppliersupplier)ReturnsanewCompletableFuturethatisasynchronouslycompletedbyataskrunningintheForkJoinPool.commonPool()withthevalueobtainedbycallingthegivenSupplier.staticCompletableFuturesupplyAsync(Suppliersupplier,Executorexecutor)ReturnsanewCompletable

java - tomcat升级后并行流不设置Thread.contextClassLoader

在tomcat从8.5.6升级到8.5.28之后,并行流停止为线程提供contextClassLoader:因为Warmer::run无法加载其中的类。warmers.parallelStream().forEach(Warmer::run);您是否知道Tomcat为新线程的contextClassLoader提供了什么?ParallelStream在最新的Tomcat中使用ForkJoinPool。 最佳答案 CommonForkJoinpool存在问题,可能会导致内存泄漏以及应用程序能够从其他上下文/应用程序加载类和资源(如果您

java - ForkJoinPool 在 invokeAll/join 期间停止

我尝试使用ForkJoinPool并行化我的CPU密集型计算。我对ForkJoinPool的理解是,只要有任何任务可以执行,它就会继续工作。不幸的是,我经常观察到工作线程空闲/等待,因此并非所有CPU都处于忙碌状态。有时我什至观察到额外的工作线程。我没想到会这样,因为我严格尝试使用nonblocking任务。我的观察与ForkJoinPoolseemstowasteathread的非常相似.在对ForkJoinPool进行了大量调试之后,我猜到了:我使用invokeAll()将工作分配给子任务列表。在invokeAll()完成执行第一个任务后,它开始加入其他任务。这工作正常,直到下一个

java - 为什么 Scala 构建自己的 ForkJoinPool 而不是使用 java.util.concurrent.ForkJoinPool#commonPool?

这个问题在这里已经有了答案:scala.concurrent.forkjoin.ForkJoinPoolvsjava.util.concurrent.ForkJoinPool(1个回答)关闭2年前。Java和Scala都引入了自己的全局ForkJoinPool,Java为java.util.concurrent.ForkJoinPool#commonPool,Scala为scala.concurrent.ExecutionContext#global。这两个似乎都旨在用于相同的用例,特别是运行非阻塞并发任务(通常是隐式的)。现在据我所知,如果你以错误的方式选择互操作依赖项,你最终会得到

java - 与 ForkJoinPool 兼容的 Hibernate ThreadLocal session 管理?

我通常在Javaweb项目中使用HibernateThreadLocalsession管理模式:TheThreadLocalSessionpatternmakesuseofthejava.lang.ThreadLocalclasstocreateaSessionthatisaccessiblefromasingleapplicationthread.Thisisparticularlyconvenientinmultithreadedapplications,suchaswebapplications.在项目中我用thread在hibernate.xml中并使用SessionFacto

java - 如何将 MDC 与 ForkJoinPool 一起使用?

跟进HowtouseMDCwiththreadpools?如何将MDC与ForkJoinPool一起使用?具体来说,我如何包装一个ForkJoinTask,以便在执行任务之前设置MDC值? 最佳答案 以下似乎对我有用:importjava.lang.Thread.UncaughtExceptionHandler;importjava.util.Map;importjava.util.concurrent.ForkJoinPool;importjava.util.concurrent.ForkJoinTask;importjava.u

java - Akka 如何从 ForkJoinPool 中获益?

Akkadocs声明默认调度程序是一个fork-join-executor,因为它“在大多数情况下提供出色的性能”。我想知道这是为什么?来自ForkJoinPoolAForkJoinPooldiffersfromotherkindsofExecutorServicemainlybyvirtueofemployingwork-stealing:allthreadsinthepoolattempttofindandexecutetaskssubmittedtothepooland/orcreatedbyotheractivetasks(eventuallyblockingwaitingfo