O que significa exatamente o termo "agnóstico de concorrência"?

Intesar Haider:

Estou tentando entender a biblioteca reativa Java e deparei-me com essa palavra-chave "independente de concorrência" aqui . Alguém pode fornecer um pequeno exemplo de trabalho para entender melhor isso?

Isso significa que o desenvolvedor precisa garantir que seu código funcione bem e atinja a simultaneidade?

ps: muito novo para aplicativos simultâneos / paralelos

co-dependente :

Isto é o que o documento diz:

... não impõe um modelo de simultaneidade. Em vez disso, deixa você, o desenvolvedor, no comando. No entanto, isso não impede que a biblioteca o ajude com a simultaneidade.

Obter um fluxo ou um mono não significa necessariamente que ele é executado em um thread dedicado. Em vez disso, a maioria dos operadores continua trabalhando no Thread em que o operador anterior executou

Vamos ver alguns exemplos:

1) Execução não simultânea / paralela. Por padrão, o Project Reactor não aplica simultaneidade. É por isso que o seguinte Mono é executado no mesmo thread (principal) em que foi inscrito:

        Logger logger = LoggerFactory.getLogger(MyApplication.class);

        Mono<String> helloMono = Mono.defer(() -> Mono.just("Hello!"))
                .doOnNext(logger::info);

        helloMono.subscribe();

Histórico:

22:06:15.235 [main] DEBUG reactor.util.Loggers$LoggerFactory - Using Slf4j logging framework
22:06:19.841 [main] INFO MyApplication - Hello!

2) Execução paralela. Podemos fazer o Mono executar em um thread diferente, reforçando o paralelismo usando a subscribeOn()operação. Observe como o Mono é executado no elastic-2encadeamento e precisamos usar um CountDownLatch para forçar o programa a esperar:

        Logger logger = LoggerFactory.getLogger(MyApplication.class);

        Mono<String> helloMono = Mono.defer(() -> Mono.just("Hello!"))
                .doOnNext(logger::info)
                .doOnTerminate(latch::countDown)
                .subscribeOn(Schedulers.elastic());

        helloMono.subscribe();

        latch.await();

Histórico:

22:11:26.704 [main] DEBUG reactor.util.Loggers$LoggerFactory - Using Slf4j logging framework
22:11:26.733 [elastic-2] INFO MyApplication - Hello!

Estruturas como o WebFlux usam uma abordagem semelhante ao segundo cenário no qual as operações de E / S liberam o encadeamento de chamada (encadeamentos http). Eles são executados em paralelo usando esses outros conjuntos de encadeamentos.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados