我是反应式编程的新手。我有一段代码,只有在并行任务结束后,应执行并行代码,该代码才应并行运行
//step 1 parallel stuff
Flux.fromIterable( sourceOneMap.keySet() )
.parallel()
.runOn( Schedulers.parallel() )
.subscribe( compId -> {
Mono.just( compId )
.then( checkIfSystemTwoContainsSystemOneInfo(compId,sourceOneMap,sourceTwoMap,new Timestamp( new Date().getTime() )) )
.doOnError( e -> log.info( "error {}", e.getStackTrace()) );} );
//step 2
return new MissingCountResult( rtbmDao.findCount(), new Date() );
现在,当我运行我的代码时,首先执行第2步,然后执行第1步。第2步取决于第1步。第1步应该首先竞争。我有办法阻止第2步,直到第1步结束。 / p>
答案 0 :(得分:0)
使用反应式编程的目的是使代码异步而不阻塞。 是的,您可以通过不使用subscribe而是使用.block()来阻止step1完成,但这不是响应式编程的重点 如果您想使其保持反应性,则最好返回流