标签: fork-join

分叉/加入JavaEE应用程序?

我知道在JavaEE应用程序中分离线程是一个很大的禁忌.但是,我有一个应用程序是Java的fork/join机制的完美候选者.但是,由于不应该在应用程序中创建线程,有没有办法在我的EJB中使用它?我知道在WebSphere应用程序中,异步bean功能提供了这一功能.但是,我的应用程序部署在JBoss EAP 6.1上,所以这不是一个选项.

在JavaEE应用程序中是否有"合法"的方法来完成fork/join?

java multithreading ejb java-ee fork-join

3
推荐指数
1
解决办法
2298
查看次数

在scala中的另一个线程上执行一个简单的任务

我想知道是否有一种方法可以在scala中的另一个线程上执行非常简单的任务,而这些任务没有很多开销?

基本上我想创建一个可以处理执行任意数量任务的全局"执行器".然后我可以使用执行程序来构建其他构造.

此外,如果客户端不必考虑阻塞或非阻塞因素,那将是很好的.

我知道scala actor库是建立在Doug Lea FJ之上的,而且他们在有限的程度上支持我想要完成的事情.但是根据我的理解,我将不得不预先分配一个'Actor Pool'来完成.

我想避免为此创建一个全局线程池,因为据我所知,它在细粒度并行性方面并不是那么好.

这是一个简单的例子:

import concurrent.SyncVar
object SimpleExecutor {
  import actors.Actor._
  def exec[A](task:  => A) : SyncVar[A] = {
    //what goes here?
    //This is what I currently have
    val x = new concurrent.SyncVar[A]
    //The overhead of making the actor appears to be a killer
    actor {
      x.set(task)
    }
    x
  }
  //Not really sure what to stick here
  def execBlocker[A](task: => A) : SyncVar[A] = exec(task)

}
Run Code Online (Sandbox Code Playgroud)

现在使用exec的一个例子:

object Examples {
  //Benchmarks a task
  def …
Run Code Online (Sandbox Code Playgroud)

parallel-processing concurrency scala fork-join actor

2
推荐指数
1
解决办法
1897
查看次数

通过DnC计算阶乘

我正在尝试通过分而治之的策略来实现阶乘功能。我使用ForkJoin框架来分叉每个递归任务,以加快计算速度。但是我发现它没有按照我的预期加速。在不使用ForkJoin的情况下,花了28秒来计算50000的阶乘,而在我使用ForkJoin时,花了25秒。这是没有forkjoin的代码:

public static BigInteger factorial(long p, long q) {
    if (q < p) {
        return new BigInteger("1");
    }
    if (p == q) {
        return new BigInteger("" + p);
    }
    BigInteger fact = new BigInteger("1");
    fact = fact.multiply(factorial(p, (p + q) / 2)).multiply(factorial((p + q) / 2 + 1, q));
    return fact;
}
Run Code Online (Sandbox Code Playgroud)

这是forkJoin的代码:

public class Factorial extends RecursiveTask<BigInteger>{
private long p, q;
public Factorial(long p, long q) {
    this.p = p;
    this.q = q;
}
@Override
public BigInteger compute() { …
Run Code Online (Sandbox Code Playgroud)

java fork-join java-7

2
推荐指数
1
解决办法
783
查看次数

fork/join多线程?

如果我有2个CPU并为fork/join框架安排1000个任务,那么一次最多可以执行2个任务,还是在同一个CPU上并行执行更多任务?(比方说,也许一个任务正在等待I/O,在这种情况下CPU会变为空闲而另一个线程可以运行)

java fork-join

2
推荐指数
1
解决办法
1746
查看次数

如何在Java Fork/Join框架中显示工作窃取?

我想改进我的fork/join小例子,以表明在Java Fork/Join框架执行工作中发生窃取.

我需要对代码进行哪些更改?示例目的:只需对多个线程之间的值分解进行线性研究.

package com.stackoverflow.questions;

import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.RecursiveTask;

public class CounterFJ<T extends Comparable<T>> extends RecursiveTask<Integer> {

    private static final long serialVersionUID = 5075739389907066763L;
    private List<T> _list;
    private T _test;
    private int _lastCount = -1;
    private int _start;
    private int _end;
    private int _divideFactor = 4;

    private static final int THRESHOLD = 20;

    public CounterFJ(List<T> list, T test, int start, int end, int factor) {
        _list = list;
        _test = test;
        _start = start; …
Run Code Online (Sandbox Code Playgroud)

java fork-join work-stealing

2
推荐指数
1
解决办法
1769
查看次数

使用JMH时输出奇怪

我正在使用jmh 使用maven并按照http://openjdk.java.net/projects/code-tools中建议的命令行方法对一个简单的应用程序进行基准测试(来自Java派生出java fork-join中的Unexpected Scalability结果/ jmh /。成功设置并建立基准后,我可以使用avgt模式获得以下基准结果:

C:\Users\username\my-app\test>java -jar target/benchmarks.jar -bm avgt -f 1
# JMH 1.10.1 (released 13 days ago)
# VM invoker: C:\Program Files\Java\jre1.8.0_45\bin\java.exe
# VM options: <none>
# Warmup: 20 iterations, 1 s each
# Measurement: 20 iterations, 1 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterations
# Benchmark mode: Average time, time/op
# Benchmark: org.sample.MyBenchmark.testMethod

# Run progress: 0,00% complete, ETA 00:00:40
# Fork: …
Run Code Online (Sandbox Code Playgroud)

java fork-join maven jmh

2
推荐指数
1
解决办法
819
查看次数

当我发出两个并行的http请求时,数据无法获取

在角度2我使用多个服务,但我无法从第二个API的订阅功能获得第一个Api的数据,所以请建议我合适的答案.

fork-join typescript angular

2
推荐指数
1
解决办法
69
查看次数

如何用Java实现多线程归并排序

我发现的大多数归并排序示例都在单个线程中运行。这首先就抵消了使用合并排序算法的一些优势。有人可以展示使用多线程在 java 中编写合并排序算法的正确方法吗?

该解决方案应使用最新版本的 java 的适用功能。Stackoverflow 上已有的许多解决方案都使用普通线程。我正在寻找一个演示 ForkJoin 与 RecursiveTask 的解决方案,这似乎是 RecursiveTask 类的主要用例。

重点应该是展示一种具有卓越性能特征的算法,包括尽可能的时间和空间复杂度。

注意:所提议的重复问题都不适用,因为两者都没有提供使用递归任务的解决方案,而这正是该问题所要求的。

java sorting mergesort multithreading fork-join

2
推荐指数
1
解决办法
2496
查看次数

forkjoin和combineLatest rxjs之间的区别

两者都用于连接多个流。

由此 我对两者感到困惑,我读了combineLatest在同步模式下进行调用和forkJoin并行调用,

我正在尝试这个

combineLatest([
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000))
    ]).subscribe(() => console.log(new Date().getTime() - start));

forkJoin([
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000)),
      of(null).pipe(delay(5000))
    ]).subscribe(() => console.log(new Date().getTime() - start));
Run Code Online (Sandbox Code Playgroud)

打印

5004
5014
Run Code Online (Sandbox Code Playgroud)

每次结果约为5秒,如果combineLatest按顺序发送请求,那么为什么它打印持续时间约为5秒。

这是正确的还是有其他区别,有示例代码吗?

fork-join observable rxjs combinelatest

2
推荐指数
1
解决办法
5736
查看次数

RxJs forkjoin 已弃用

我检查了我的项目,发现 forkjoin 已被弃用,因为forkjoin它已从 Angular 中弃用,最好的选择是什么?

fork-join rxjs angular

1
推荐指数
1
解决办法
1万
查看次数