Qu'est-ce que Thread Safe (avec Java)

le sens du mot

Lorsque plusieurs threads accèdent à des données partagées, un seul thread doit accéder aux données partagées à la fois pour garantir la sécurité.

Si vous ne le rendez pas thread-safe pour les applications qui sont censées être utilisées par plusieurs personnes en même temps, vous serez dans un état où M. A acquiert involontairement des données que seul M. A devrait pouvoir voir. Je vais finir.

Alors que faire

--Pour Java, utilisez des variables locales au lieu des variables de classe et des variables d'instance. --Cependant, il n'y a pas de problème avec les constantes autres que les variables locales qui sont utilisées statiquement et ne changent pas.

Plus précisément, ce qui se passe à l'intérieur

Les variables locales sont stockées dans une zone de mémoire appelée zone de pile Java, de sorte qu'elles ne sont accessibles que par un seul thread. En d'autres termes, il est conservé dans une zone de mémoire différente pour chaque thread et ne peut pas être référencé ou réécrit par d'autres threads. À propos, les variables de classe et les variables d'instance sont conservées dans une zone de mémoire appelée zone de tas, et cette zone est référencée par plusieurs threads.

Mise en garde

Sachez que même si vous n'utilisez pas de variables de classe et d'instance dans les programmes Java, vous les utiliserez involontairement dans JSP.

<%! int count = 0; %>

Le JSP est compilé dans un servlet au moment de l'exécution, mais la déclaration ci-dessus est développée en tant que variable d'instance.

Recommended Posts

Qu'est-ce que Thread Safe (avec Java)
Qu'est-ce que Java <>?
Qu'est-ce que 'java
Qu'est-ce que l'encapsulation Java?
Résumé des threads sûrs ~ Java ~
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
[Java] Qu'est-ce que flatMap?
[Java] Qu'est-ce que ArrayList?
Qu'est-ce que l'assertion Java? Résumé.
DateFormat n'est pas thread-safe
Qu'est-ce qu'une collection Java?
Java thread sans danger pour vous
[Java] Qu'est-ce que jaee j2ee?
[Java] Qu'est-ce que l'héritage de classe?
[Notions de base Java] Qu'est-ce que la classe?
Qu'est-ce que l'analyse Java Escape?
Qu'est-ce que JVM (Java Virtual Machine)?
processus thread-safe en java
[Java] Qu'est-ce que l'exception de modification simultanée?
Ce que j'ai appris avec Java Gold
Qu'est-ce qu'une expression lambda (Java)
Ce que j'ai appris avec Java Silver
Les variables locales Java sont thread-safe
Qu'est-ce qu'une classe en langage Java (3 /?)
Apprenez de «Et alors», les bases de Java [pour les débutants]
Quelle est la meilleure lecture de fichier (Java)
Qu'est-ce qu'une classe en langage Java (1 /?)
Qu'est-ce que Java et l'environnement de développement (MAC)
Qu'est-ce qu'une classe en langage Java (2 /?)
Quelle est la méthode principale en Java?
Qu'est-ce que Cubby
Qu'est-ce qui est nul? ]
Qu'est-ce que Keycloak
Qu'est-ce que maven?
Qu'est-ce que Jackson?
Qu'est-ce que soi
Qu'est-ce que Jenkins
Qu'est-ce que ArgumentMatcher?
Traitement des threads Java
Qu'est-ce que les paramètres
Qu'est-ce que SLF4J?
Qu'est-ce que la façade? ??
Qu'est-ce que Gradle?
Qu'est-ce que POJO
Qu'est-ce que centOS
Qu'est-ce que RubyGem?
Qu'est-ce que before_action?
Qu'est-ce que Docker
Qu'est-ce que Byte?
Qu'est-ce que Tomcat
Qu'est-ce que le modèle Java Servlet / JSP MVC?
Ce qui est installé par l'installation du groupe yum / dnf
Quel est le modificateur volatile pour les variables Java?
Installez java avec Homebrew
Qu'est-ce que l'assemblage Maven?
Qu'est-ce que `docker-compose up`?