0
votes

Méthodes statiques et sécurité des threads en Java

Je comprends que la méthode statique ne garantit pas la sécurité des threads. Parce que même s'il existe une méthode de classe unique dans toute l'application, cette méthode peut être appelée simultanément et peut entraîner des problèmes de sécurité des threads si vous ne faites pas attention. Mais que se passe-t-il lorsque cette méthode de classe n'affecte aucune variable globale? Est-ce que Thread Safe est toujours? Par exemple, j'ai ce code:

public static String convertToString(int i) {
    return String.valueOf(i);
}

Si 2 threads ou plus devaient appeler cette méthode simultanément, est-ce thread safe?


4 commentaires

" Si 2 threads ou plus devaient appeler cette méthode simultanément, est-ce thread-safe? " - Oui.


il contient déjà une question et une réponse: stackoverflow.com/questions/13910976/... .


Il n'y a pas d'état partagé, donc oui.


Merci d'avoir partagé ce lien. Il a donné une réponse claire et concise. Merci.


3 Réponses :


3
votes

Oui, cette méthode est thread-safe. Le problème avec la sécurité des threads se produit lorsque la méthode statique essaie de faire quelque chose de plus complexe, comme le partage de données.

Pour en savoir plus,

public static String convertToString(int i) {
    return String.valueOf(i);
}

la méthode ci-dessus fonctionne uniquement sur le paramètre i , qui réside sur la pile. La pile est locale au thread, donc elle est parfaitement thread-safe.


0 commentaires


3
votes

Oui, c'est thread-safe. Tant que la méthode statique ci-dessus ne lit / ne modifie pas la référence ou la valeur mutable partagée. Par exemple: -

private static int counter = 0;

public static String convertToString(int i) {

    //this has race conditions.
    counter++;

    return String.valueOf(i);
}


0 commentaires