С многопоточными программами вы можете иметь некоторые проблемы с чем угодно, не только со статическими классами.Когда речь идет о многопоточности, основной проблемой обычно является конфликт данных ... другими словами: обеспечение правильной работы при чтении или записи в общий ресурс.У статических классов есть некоторые проблемы, но у них также есть некоторые потенциальные преимущества:
Задача
- По умолчанию некоторые данные предоставляются непосредственно как переменная-член или косвенно через метод доступа / мутаторпоэтому защита ресурса более сложна.
- Любой, кто использует статический класс, может вызвать проблемы с многопоточностью, если он использует правильную синхронизацию.
Преимущество
Aпотенциальная выгода состоит в том, что если статические данные постоянные , тогда не будет необходимости в синхронизации, поскольку данные могут быть прочитаны, а не записаны.Популярным примером является класс Singleton
, который использует статический экземпляр, и экземпляр инициализируется только один раз, поэтому нет необходимости синхронизировать экземпляр Singleton.Тем не менее может потребоваться синхронизация данных, содержащихся в
Singleton
экземпляр