我有以下方法:
public String getResult() {
List<String> serversList = getServerListFromDB();
List<String> appList = getAppListFromDB();
List<String> userList = getUserFromDB();
return getResult(serversList, appList, userList);
}
在这里,我依次调用三种方法,这依次命中数据库并获取我的结果,然后对从数据库命中获得的结果进行后处理。我知道如何通过使用并发调用这三种方法Threads
。但是我想用Java
8 Parallel Stream
来实现。有人可以指导我如何通过并行流实现相同目标吗?
编辑 我只想通过Stream并行调用方法。
private void getInformation() {
method1();
method2();
method3();
method4();
method5();
}
您可以利用CompletableFuture
这种方式:
public String getResult() {
// Create Stream of tasks:
Stream<Supplier<List<String>>> tasks = Stream.of(
() -> getServerListFromDB(),
() -> getAppListFromDB(),
() -> getUserFromDB());
List<List<String>> lists = tasks
// Supply all the tasks for execution and collect CompletableFutures
.map(CompletableFuture::supplyAsync).collect(Collectors.toList())
// Join all the CompletableFutures to gather the results
.stream()
.map(CompletableFuture::join).collect(Collectors.toList());
// Use the results. They are guaranteed to be ordered in the same way as the tasks
return getResult(lists.get(0), lists.get(1), lists.get(2));
}
我有访问MySQL(5.7)数据库Wicket(8.6)应用程序。在spring-context.xml中建立mysql连接,如下所示: 我遇到的问题是,我需要执行一个非常长的SQL查询,根据所选的时间范围,这可能很容易花费几分钟的时间。我已经解释过,当执行查询时,整个wicket应用程序会减慢到这样的程度,即不再执行其他查询。顺便说一句:长查询只是一个读取查询。所以它不应该锁定一个表。br>如果
我正在亚马逊的EMR集群上同时运行3个Spark流进程。问题是这三个Spark流作业中的一个基于进行处理: 有没有办法在不更改代码的情况下解决这个问题?
问题内容: 我需要用一个查询插入多行(行数不是常数),所以我需要像这样执行查询: 我知道的唯一方法是 但我想要一些更简单的方法。 问题答案: 我构建了一个程序,该程序将多行插入到位于另一个城市的服务器上。 我发现使用此方法的速度大约是的10倍。就我而言,tup是一个包含约2000行的元组。使用此方法大约花了10秒钟: 使用此方法需要2分钟:
请考虑以下代码: 任务是应该并行执行的运行表的列表。当我们启动这个线程,并且它开始执行时,根据一些计算,我们需要中断(取消)所有这些任务。 中断线程只会停止执行中的一个。我们怎么对付别人?或者流不应该这样使用?或者你知道更好的解决办法?
问题内容: 我要查询所有10个表以从中获取用户ID,并将所有用户ID加载到HashSet中,以便可以拥有唯一的用户ID。 截至目前,它是按顺序进行的。我们转到一个表,并从中提取所有user_id并将其加载到哈希集中,然后将其存储在第二个和第三个表中并继续运行。 有什么方法可以使这个多线程的,以便他们为每个表并行地从我的表中获取数据?最后,我需要哈希集,该哈希集应具有所有10个表中的所有唯一用户ID
问题内容: 我有简单的搜寻器,可搜寻和搜寻页面。但是现在我有问题如何执行和解析该页面中的js链接。有谁知道如何解析和执行js页面吗? 例: some_url易于使用webhtmltoolktit进行解析 JAVASCRIPT:runmeat(1,7,0,2,7,9)是js链接,它随后重定向到some_url2页面,然后我需要对该页面进行爬网。但是问题是如何在C#中执行此javascript以获取s