Czy korzystanie z mutowalnych obiektów wewnątrz metody jest bezpieczne dla wątków?

0

Cześć,

piszę appkę w WebFluxie i chcę wygenerować sobie treść maila przy pomocy Thymeleaf:

    public String generateSignUpMailBody(Locale locale, String activationLink) {
        String templateName = getTemplateName(MailTemplates.SIGNUP, locale);

        final Context params = new Context();
        params.setVariable("activationLink", activationLink);
//        params.setVariable("name", name);
//        params.setVariables przyjmuje mape, moze uzyc ConcurretnHashMap ?

        return generateBody(templateName, params);
    }

    public String generateBody(String templatePath, Context params) {
        return this.templateEngine.process(templatePath, params);
    }

Wewnątrz metody generateSignUpMailBody() używam klasy Context, która jest mutowalna. Czy taki kod jest bezpieczny dla wątków? Czy mam 100% pewności, że inny wątek wykonujący tę metodę nie zmieni stanu params i nie wyśle mi linku aktywacyjnego innej osoby?

Generalnie pytam czy takie użycie mutowalnych obiektów jest bezpieczne dla wątków.

Wg mnie tak, bo każdy wątek będzie widział swoją instancję obiektu Context, a skoro nie dzielę się nigdzie referencją do niego to nie muszę synchronizować.

3

Tak. Jest bezpieczne (no chyba, że klasa Context jest dziwacznie napisana. Zakładam, że nie).

1 użytkowników online, w tym zalogowanych: 0, gości: 1