Que signifie exactement le terme "accès concurrentiel"?

Intesar Haider:

J'essaie de comprendre la bibliothèque réactive Java et je suis passé par ce mot-clé "agnostique concurrentiel" ici . Quelqu'un peut-il fournir un petit exemple de travail pour mieux comprendre cela?

Cela signifie-t-il que le développeur doit s'assurer que son code fonctionnera correctement et qu'il atteindra la concurrence?

ps: très nouveau pour les applications simultanées / parallèles

codépendant:

Voici ce que dit le doc:

... il n'applique pas de modèle de concurrence. Au contraire, cela vous laisse, le développeur, aux commandes. Cependant, cela n'empêche pas la bibliothèque de vous aider avec la concurrence.

L'obtention d'un Flux ou d'un Mono ne signifie pas nécessairement qu'il s'exécute dans un Thread dédié. Au lieu de cela, la plupart des opérateurs continuent de travailler dans le thread sur lequel l'opérateur précédent a exécuté

Voyons quelques exemples:

1) Exécution non simultanée / parallèle. Par défaut, Project Reactor n'applique pas la concurrence. C'est pourquoi le Mono suivant s'exécute sur le même thread (principal) auquel il a été abonné:

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

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

        helloMono.subscribe();

Journaux:

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

2) Exécution parallèle. Nous pouvons faire exécuter le Mono sur un thread différent, imposant le parallélisme à l'aide de l' subscribeOn()opération. Remarquez comment le Mono s'exécute sur le elastic-2thread et nous devons utiliser un CountDownLatch pour forcer le programme à attendre:

        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();

Journaux:

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

Les frameworks tels que WebFlux utilisent une approche similaire au deuxième scénario dans lequel les opérations d'E / S libèrent le thread appelant (threads http). Ils sont exécutés en parallèle à l'aide de ces autres pools de threads.

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Que signifie exactement le terme POPO (Plain Old PHP Object)?

ConcurrentMessageListenerContainer réduit le nombre d'accès concurrentiel tant que la partition existe

Que signifie exactement le terme «déréférencer» un objet?

Que signifie le terme: Python -m?

Que signifie le terme «porcelaine» dans Git?

Que signifie le terme "Stopword" dans MySQL?

Que signifie exactement le contenu opaque?

question sur le code d'accès concurrentiel d'oracle.com expliquant le blocage

Contrôle d'accès concurrentiel de sécurité Spring avec UsernamePasswordAuthenticationFilter personnalisé

Que signifie le terme «attribut» dans le contexte des parseurs?

Que signifie le terme "radiodiffusion" dans la documentation des Pandas?

Que signifie le terme «trié» sur les problèmes TensorFlow?

Que signifie le terme «adaptatif» dans les segments adaptatifs?

Que signifie le terme «client Http basé sur la promesse»?

Que signifie le terme IBM cloud resource_ID

Que signifie exactement "import *"?

Que signifie exactement IQueryable?

Que signifie exactement authTokenType?

Que signifie exactement «initialisation»?

Que signifie exactement Degit?

PostgreSQL - MVCC (contrôle d'accès concurrentiel multi-version) - Quand le verrou réel est-il acquis?

que signifie exactement AWAIT_TIME dans le profileur Azure?

PHPUnit: Que signifie exactement le paramètre de configuration syntaxCheck

Que signifie exactement «contexte» dans le code C # async / await?

Chaîne de responsabilité, que signifie exactement ce modèle ?

AWS - Accès concurrentiel SQS

Que signifie exactement cette ligne?

Que signifie exactement Spring Configuration?

Azure: Que signifie exactement «limite»?

TOP liste

  1. 1

    Filtrer le dataframe basé sur plusieurs colonnes d'un autre dataframe

  2. 2

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  3. 3

    Enregistrer le chemin de l'image de la galerie vers la base de données de la salle et l'afficher dans la liste des recycleurs

  4. 4

    Comment envoyer plusieurs variables de la lame au contrôleur

  5. 5

    Comment afficher du texte au milieu de div avec une couleur d'arrière-plan différente?

  6. 6

    Microsoft.WebApplication.targets

  7. 7

    Échec de l'exécution de 'insertBefore' sur 'Node': le paramètre 1 n'est pas de type 'Node'

  8. 8

    System.Data.SqlClient.SqlException: 'Nom de colonne non valide' ApplicationRoleId '.'

  9. 9

    Comment définir du texte dans un QLabel et afficher les caractères '<>'?

  10. 10

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

  11. 11

    Concaténer des variables dans ansible

  12. 12

    Comment centrer un div tout en utilisant la transition et transformer avec l'échelle

  13. 13

    Filtrer les données en fonction des conditions d'une trame de données

  14. 14

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  15. 15

    ESP8266 HADRWARE MINUTERIE, USA pour cocher une macro étrange

  16. 16

    comment afficher un bouton au-dessus d'un autre élément ?

  17. 17

    php ajouter et fusionner des données de deux tables

  18. 18

    Stop jQuery execution after one time execution

  19. 19

    Pourquoi Phantomjs ne fonctionne pas avec ce site ?

  20. 20

    obtenir le nombre de marqueur affiché sur la carte

  21. 21

    Redirection HTTP vers HTTPS dans Java à l'aide de HTTPURLConnection

chaudétiquette

Archive