Wątpliwości dotyczące współbieżności z obiektami, które mogą być używane wielokrotnie, jak formatyzatory

Może głupie pytanie, ale potrzebuję pewnych potwierdzeń.

Zazwyczaj, gdy mam do czynienia z obiektami, które mogą być używane wielokrotnie w mojej aplikacji, używam podejścia podobnego do następującego.

Utwórz rozszerzenie, na przykładNSDecimalNumber+Extensionlub narzędzie klasy, w którym formater liczbowy jest tworzony w następujący sposób.

+ (NSNumberFormatter*)internal_sharedNumberFormatter
{
    static NSNumberFormatter* _internal_numberFormatter = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _internal_numberFormatter = [[NSNumberFormatter alloc] init];
        // other configurations here...
    });

    return _internal_numberFormatter;
}

+ (NSString*)stringRepresentationOfDecimalNumber:(NSDecimalNumber*)numberToFormat
{
    NSString *stringRepresentation = [[self class] internal_sharedNumberFormatter] stringFromNumber:numberToFormat];
    return stringRepresentation;
}

Takie podejście jest całkiem dobre, ponieważ na przykład formatery są drogie w tworzeniu. Ale można to również zastosować do innych sytuacji.

Moje pytania są następujące.

Czy to podejście jest również ważne w sytuacjach, w których zaangażowana jest inna ścieżka wykonania (różne wątki)?

Więc jeśli zadzwonię pierwszystringRepresentationOfDecimalNumber w głównym wątku, a następnie w innym wątku, co może się stać?

Myślę, że ważne jest wykonywanie różnych połączeństringRepresentationOfDecimalNumber w różnych wątkach, ponieważ wspólny formater, w tym przypadku, czyta tylko, ale chciałbym uzyskać odpowiedź od ekspertów.

Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion