在我的项目中,我使用Java中Vert.x的Future
实现。到目前为止一切都很顺利。然而,目前我有问题执行一个动作的对象列表顺序。问题在于reduce
方法在Java中分别“reduce”和“sombining”结果。这将导致所有操作同时启动。实现顺序执行是可能的,可以在easy
方法中看到这一点。
private Future<Void> action(String object) {
System.out.println("started " + object);
Future<Void> f = Future.future();
vertx.setTimer(1000, res -> {
System.out.println("doing " + object);
f.complete();
});
return f;
}
private void easy() {
action("one")
.compose(ignore -> action("two"))
.compose(ignore -> action("three"))
.setHandler(ignore -> System.out.println("completed"));
}
private void list() {
List<String> l = new ArrayList<>();
l.add("one");
l.add("two");
l.add("three");
Future<Void> f = Future.future();
l.stream().reduce(f,
(f1, s) -> action(s),
(f1, f2) -> f2.compose(ignore -> f1)
).setHandler(res -> {
System.out.println("completed");
});
}
执行Easy时的输出:
started one
doing one
started two
doing two
started three
doing three
completed
started one
started two
started three
doing one
doing two
doing three
completed
function action(object) {
return new Promise((resolve, reject) => {
console.log("started " + object)
window.setTimeout(() => {
console.log("doing " + object);
resolve()
}, 1000);
});
}
function easy() {
action("one")
.then(() => action("two"))
.then(() => action("three"))
.then(() => console.log("completed"));
}
function list() {
l = ["one", "two", "three"]
l.reduce((p, s) => p.then(() => action(s)), Promise.resolve())
.then(() => console.log("completed"));
}
// easy()
list()
easy
和list
的输出与Java代码的easy方法相同。我正在寻找的是一种修复Java中reduce方法的方法,或者一种实现相同结果的替代方法。
好啦。我在这里找到了一个foldLeft方法的实现,现在顺序执行工作正常...
private void list() {
List<String> l = new ArrayList<>();
l.add("one");
l.add("two");
l.add("three");
Future<Void> f = Future.succeededFuture();
foldLeft(l.iterator(), f,
(f1, s) -> f1.compose(ignore -> action(s)))
.setHandler(res -> {
System.out.println("completed");
});
}
private static <A, B> B foldLeft(Iterator<A> iterator, B identity, BiFunction<B, A, B> bf) {
B result = identity;
while(iterator.hasNext()) {
A next = iterator.next();
result = bf.apply(result, next);
}
return result;
}
我有一个a、B、C的
问题内容: 有什么办法可以限制celery的工人数量?我的服务器很小,celery总是在1个核心处理器上创建10个进程。我想将此数目限制为3个进程。 问题答案: 我尝试在我的settings.py文件中将并发设置为1,将max_tasks_per_child设置为1,并同时运行3个任务。它仅以用户的身份生成1个进程,而以Celery的形式生成其他2个进程。它应该只运行1个进程,然后等待它完成,然后
本文向大家介绍在C++中减少菜肴,包括了在C++中减少菜肴的使用技巧和注意事项,需要的朋友参考一下 假设有个厨师。并且他收集了有关他的n道菜的满意度的数据。厨师可以在1个单位时间内烹饪任何菜肴。菜的喜欢时间系数实际上是花费的时间 烹饪该菜肴(包括以前的菜肴)乘以其满意程度,即时间[i] *满意度[i]。 我们必须找到厨师在准备菜后可以获得的最大喜欢时间系数总和。可以以任何顺序准备菜肴,厨师可以丢弃
问题内容: 在JSF中减小viewstate隐藏字段大小的最佳方法是什么?我已经注意到,我的视图状态大约为40k,这会下降到客户端,并在每次请求和响应(尤其是到达服务器)时都返回到服务器,这对于用户来说是一个严重的问题。 我的环境JSF 1.2,MyFaces,Tomcat,战斧,RichFaces 问题答案: 您是否尝试过将状态保存设置为服务器?这应该仅将ID发送给客户端,并在服务器上保持完整状
我试图减少一个双精度字符的数量。我如何减少这一点: 到 这是斯威夫特的吗?
我的MySQL中有一个InnoDB表,它存储产品的当前库存,每当产品售出时(总是按单位,即总是-1),库存就必须更新,比如说: 现在,我正在使用Hibernate,因此我通过将currentStock属性的值设置为“currentValue -1”来更新对象ProductStock,如下所示: 现在,我正在使用事务来提交更改,但是我不确定当同时进行多次销售时Hibernate会做什么,并且我无法成