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

Odpowiedz Nowy wątek
2019-02-19 08:29
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ć.


Pozostało 580 znaków

2019-02-19 09:14

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


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 1x, ostatnio: jarekr000000, 2019-02-19 10:49
Ok, dzięki za potwierdzenie. - kkojot 2019-02-19 09:17

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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