Maison  >  Article  >  Java  >  Introduction détaillée sur ce qui se passe avant

Introduction détaillée sur ce qui se passe avant

巴扎黑
巴扎黑original
2017-06-14 09:46:341688parcourir

Lors de l'exécution d'un programme, afin d'améliorer les performances, les processeurs et les compilateurs réorganisent souvent les instructions, mais elles ne peuvent pas être réorganisées à volonté. Il ne s'agit pas seulement de la manière dont vous souhaitez les trier. Il doit remplir les deux conditions suivantes : 1. . Les résultats de l'exécution du programme ne peuvent pas être modifiés dans un environnement monothread ; 2. La réorganisation n'est pas autorisée s'il existe des dépendances de données. Si vous avez lu le blog précédent de LZ, vous saurez qu'en fait, ces deux points peuvent être attribués. un point : le principe qui se produit avant ne peut pas être transmis. Par extension, JMM permet un classement arbitraire. sémantique comme si-série la sémantique comme si-série signifie que toutes les opérations peuvent être réorganisées pour l'optimisation, mais vous devez vous assurer que les résultats d'exécution après la réorganisation ne peuvent pas être modifiés, le compilateur, l'exécution, le processeur doivent tous être conformes à comme si- sémantique sérielle. Notez que as-if-serial garantit uniquement un environnement monothread et n'est pas valide dans un environnement multithread. Utilisons un exemple simple pour illustrer : int a = 1;

1 【Concurrency Java morte】-----Réorganisation du modèle de mémoire Java

Introduction détaillée sur ce qui se passe avant

Introduction : Lors de l'exécution d'un programme, afin d'améliorer les performances, les processeurs et les compilateurs réorganisent souvent les instructions. Mais vous ne pouvez pas réorganiser à volonté. . Vous ne pouvez pas le trier comme vous le souhaitez. Il doit remplir les deux conditions suivantes : 1. Le résultat de l'exécution du programme ne peut pas être modifié dans un environnement monothread. 2. La réorganisation n'est pas autorisée s'il existe des dépendances de données. Si vous regardez ceux qui ont lu le dernier blog de LZ, vous saurez que ces deux points peuvent en réalité être attribués à une seule chose : cela ne peut pas être déduit par le principe de ce qui se passe avant, et JMM permet un tri arbitraire. sémantique comme si-série comme si-se

2 【Concurrence Java】-----Le modèle de mémoire Java se produit avant

Introduction détaillée sur ce qui se passe avant

Introduction : Dans le dernier blog ([Deadly Java Concurrency] - Analyse approfondie du principe d'implémentation de volatile) LZ l'a mentionné Il a été constaté qu'en raison de l'existence de la mémoire locale des threads et de la mémoire principale, associée à la réorganisation, il y aurait des problèmes de visibilité dans les environnements multithreads. Donc, si nous utilisons correctement la synchronisation et le verrouillage, quand le thread A modifie-t-il la variable a visible pour le thread B ? Nous ne pouvons pas stipuler dans tous les scénarios quand les variables modifiées par un thread sont visibles par les autres threads, mais nous pouvons spécifier certaines règles. À partir du JDK 5, JMM utilise ha

<.>3.

Pratique de l'algorithme de synchronisation non bloquant (3) - LatestResultsProvider

Introduction détaillée sur ce qui se passe avant

Introduction : Merci à trytocatch pour avoir soumis cet article. Préface Avant de lire cet article, les lecteurs doivent se familiariser avec ce qui se passe avant et comprendre certains concepts de base de la synchronisation non bloquante. Cet article se concentre principalement sur l’application flexible de la règle « arrive avant », quelques conseils pour résoudre les problèmes et les moyens d’analyser les problèmes. Introduction de base L'exigence initiale est la suivante : j'écrivais un outil de remplacement régulier

[Recommandations de questions et réponses associées] :

se produit à partir du modèle de mémoire Java - beforeProblème d'ordre sémantique

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn