Comment faire du fil classe java en toute sécurité?


Manish:

J'ai une classe java comme ci-dessous

 class User {

    String name;
    String phone;

    public String getName() {
        return name;
    }

    public String getPhone() {
        return phone;
    }

}

La façon dont cette classe est utilisée est, pour chaque thread 1 objet de cette classe d'utilisateur est créé. Maintenant, étant donné qu'il est une copie de l'objet pour chaque thread, je peux appeler cette classe comme la sécurité de fil?

Ai-je besoin de synchroniser ces méthodes?

Andronicus:

La façon dont vous l'avez présenté, si chaque thread a sa une copie, il peut être appelé thread-safe, comme un maximum d'accès à fils est un.

Une autre chose - si vous déclarez vos champs privateet de créer l'instance de cette classe final, il est immuable ( final User user = new User(...)). Il n'y a pas setters, de sorte que l'objet ne peut être modifié aussi bien qu'il ne peut pas changer de référence. Si vous voulez garder l'immuabilité, vous devez faire setters retourner une nouvelle instance de cet objet avec des champs modifiés.

@markspace remarqué qu'une meilleure approche serait de déclarer des champs comme définitif, parce que si vous utilisez le précédent et faire Userun membre d'une classe, il ne fonctionnera pas (sauf finale).

Articles connexes